Novembro, 14 2007
Seu código não está funcionando?
O resultado do cálculo está errado?
coloque o error_reporting(E_ALL); no início do seu script
Execute esse script sem usar o error_reporting(E_ALL);
<?php
$var = 4 * $num;
echo $var;
?>
O resultado será 0 (zero)! Sem erro nenhum!
Agora experimente colocar error_reporting(E_ALL);
<?php
error_reporting(E_ALL);
$var = 4 * $num;
echo $var;
?>
O PHP retornará um erro dizendo que a variável $num não foi iniciada.
Isso é só um exemplo do que o error_reporting(E_ALL); pode fazer por nós!
1 Comentário |
PHP, Programação | Etiquetado: error_reporting(E_ALL), erros, PHP, Programação |
Link Permanente
Escrito por henricristo
Novembro, 13 2007
Esta é uma compilação de material traduzido de algumas pesquisas feitas no google.
- se um método pode ser static, declare-o como static. Isso irá aumentar a performance umas 4 vezes.
- echo é mais rápido do que print
- utilize o unset nas suas variáveis para liberar memória (bons tempos em que todo mundo sabia programar em C
.. “free your mallocs”)
- não use require_once()
- utilize o caminho absoluto na hora de dar os includes, assim o PHP não perde tempo tentando resolver o caminho.
- str_replace é mais rápido do que preg_replace porém strtr é umas 4 vezes mais rápido do que str_replace
- utilizar @ para suprimir os erros é muito lento.
- habilite o mod_deflate no apache
- feche a sua conexão com o banco se você não irá mais utilizá-la (mas não fique abrindo e fechando toda hora!)
- $row['abc'] é 7 vezes mais rápido do que $row[abc]
- não use funções dentro de um laço, como por exemplo, for ($x=0; $x < count($array); $x++) porque count() vai ser executada em todo ciclo do laço. Utilize: for ($x=0, $c=count($array); $x < $c; $x++).
- Incrementar uma variável global é duas vezes mais lento do que incrementar uma variável local
- acessar um atributo de um objeto ($obj->atributo++, por exemplo) é 3 vezes mais lento do que acessar uma variável local
- incrementar uma variável local não inicializada é 9-10 vezes mais lento do que se ela tivesse sido inicializada.
- aspas simples são mais rápidas que aspas duplas
- uma aplicação que faça cache dos scripts php vai aumentar a performance entre 25 e 100%.
- utilize cache sempre que possível. SEMPRE! (claro que isso tem um onus, mas estamos falando apenas em performance aqui)
- Se quiser testar o tamanho de uma string, utilize isset ao invés de strlen. Por exemplo: if (!isset($foo{5})) echo “foo eh mto pequeno!”;
- nem tudo precisa ser OO. Métodos e objetos tendem a consumir muito mais memória.
- não converta toda estrutura de dados em classes. Utilizar arrays é muito mais rápido.
- se você possui funções que demandam muito tempo de execução cogite transforma-las em uma extensão em C.
- habilitar o mod_gzip pode economizar em até 80% o tráfego de dados. Sua largura de banda agradece.
- evite usar SELECT *. Isso dificulta a manutenção e gasta tempo desnecessário de processamento para descobrir os campos e obter os valores do banco
- use switch ao invés de um monte de ifs
- json é mais rápido do que xml.
4 Comentários |
PHP, Programação | Etiquetado: dicas, peformance, PHP, Programação |
Link Permanente
Escrito por henricristo
Novembro, 13 2007
Ontem uma pessoa pediu ajuda no #php-br na feenode dizendo que atualizou o php e que agora seus códigos não funcionam mais. Era algum erro de ‘unexpected $end‘. É o sintoma do uso das open_short_tag “<?”.
Por que não usar?
Porque o <? pode ser <?xml e então se código xml vai rodar como PHP, e isso não é uma boa coisa.
Além do mais a maioria das empresas de hosting não habilitam o open_short_tag no php.ini. Então esqueça, jamais, nunca, nunca escreva seus códigos com <? echo “blah” ?>
use sempre o <?php
Um abraço!
1 Comentário |
PHP | Etiquetado: Dica, open_short_tag, PHP |
Link Permanente
Escrito por henricristo
Novembro, 12 2007
Precisei gerar uma imagem de texto e vou compartilhar com voces.
Primeiro verifique se a bibliteca GD está habilitada no PHP:
<?php var_dump(gd_info()); ?>
Se o retorno for um array é pq está funcionando
Segue abaixo o código que fiz para gerar a imagem:
// Configura o tipo de imagem para gif
header("Content-type: image/gif");
//Configura o tamanho da fonte
$tamanhofonte = 18;
//A fonte deve ser True Type e deve estar no mesmo diretório do script
$fonte = 'La Bamba.ttf';
// O texto que será usado para criar a imagem
$texto = 'Olá mundo!';
// Criando a imagem
$tamanho = imagettfbbox($tamanhofonte, 0, $fonte, $texto);
$largura = $tamanho[2] + $tamanho[0] + 8;
$altura = abs($tamanho[1]) + abs($tamanho[7]);
$imagem = imagecreate($largura, $altura);
$corPreta = imagecolorallocate($imagem, 255, 255, 255);
imagecolortransparent($imagem, $corPreta);
// Criando as cores
$branco = imagecolorallocate($imagem, 0, 0, 17);
$preto = imagecolorallocate($imagem, 0, 0, 0);
//Adicionando o Texto na imagem
imagefttext($imagem, $tamanhofonte, 0, 0, abs($tamanho[5]), $preto, $fonte, $texto);
// Gera a imagem
imagegif($imagem); // Destrói os recursos alocados pela imagem
imagedestroy($imagem);
?>
Salve o script como textoimg.php por exemplo.
Depois é só chamar ele dentro de um <img>
<img src='textoimg.php>
Pronto =)
Deixar um comentário » |
PHP | Etiquetado: php programação |
Link Permanente
Escrito por henricristo
Novembro, 11 2007
Pô, quando eu comecei a programar em PHP eu não sabia qual era a diferença dessas funções, e achei a minha resposta com muito esforço. Então aí vai, rapidinho, quanl a diferença.
include(): Tenta incluir uma página. Caso de algum erro, o script retorna um warning (aviso) e prossegue com a execução do script. Aceita a passagem de variáveis (GET) na string. Pode ser utilizado em uma estrutura de condicionais que terá seu efeito perpetuado todas as vezes que for chamado.
Require(): Tenta incluir uma página. Caso de algum erro, o script retorna um fatal error(erro fatal) (Que maravilha!) e aborta a execução do script. Aborta mesmo, já era não roda nada mais dali pra frente. Não aceita a passagem de variáveis (GET) na string. Não recomendo que utilizem nas estruturas condicionais, a menos que se deseje o seu efeito, de ser executada apenas uma vez.
include_once() e require_once(): Idênticas as suas funções simples, porém se o arquivo referenciado já foi incluso na página anteriormente, a função retorna ‘false’ e o arquivo não é incluido. É bom quando temos muitos includes e já estamos perdidos, sem saber o que está incluindo o que.
3 Comentários |
PHP | Etiquetado: Dica, PHP, Programação |
Link Permanente
Escrito por henricristo
Novembro, 11 2007
Aspas duplas: fazem pre-processamento das váriaveis.
Ex:
$var = "olá mundo";
echo "Resposta: $var"
Resultado:
Resposta: olá mundo
Aspas simples: não fazem pre-processamento das váriaveis.
Ex:
$var = "olá mundo";
echo "Resposta: $var"
Resultado:
Resposta: $var
Então? Otimize seu código, quando você estiver certo de que não ira ter váriaveis dentro das aspas use aspas simples, assim o PHP não irá ficar procurando váriaveis para pre-processar.
1 Comentário |
PHP | Etiquetado: Dica, PHP, Programação |
Link Permanente
Escrito por henricristo