Pergunta

O que posso fazer para aumentar o desempenho e a velocidade dos meus scripts PHP, sem instalação de software nos meus servidores?

Foi útil?

Solução

De perfil.De perfil.De perfil.Eu não tenho certeza se há alguma coisa lá fora para PHP, mas deve ser simples para escrever uma pequena ferramenta para inserir informações de perfil no seu código.Você vai querer função do perfil vezes e a consulta SQL vezes.

Então, de onde você tem uma função:

function foo($stuff) {
    ...
    return ...;
}

Eu mudaria para:

function foo($stuff) {
    trace_push_fn('foo');
    ...
    trace_pop_fn('foo');
    return ...;
}

(Este é um daqueles casos onde vários retornos em função de se tornar um impedimento.)

E SQL:

function bar($stuff) {
    trace_push_fn('bar');

    $query = ...;
    trace_push_sql($query);
    mysql_query($query);
    trace_pop_sql($query);

    trace_pop_fn('bar');
    return ...;
}

No final, você pode gerar um rastreamento completo de execução do programa e usar todos os tipos de técnicas para identificar os seus gargalos.

Outras dicas

Um razoável técnica que pode ser facilmente puxado para fora da prateleira é a colocação em cache.Uma vasta quantidade de tempo que tende a ir para a geração de recursos para os clientes que são comuns entre as solicitações (e mesmo entre clientes);eliminando este tempo de execução do trabalho pode levar à acentuada com o aumento da velocidade.Você pode dump gerado um recurso (ou recursos fragmento) em um arquivo fora da web árvore e, em seguida, lê-lo novamente quando necessário.Obviamente, alguns perfis vai ser necessário para garantir que esse, na verdade, é mais rápido do que a regeneração - forçando o servidor web para o disco regularmente, pode ser prejudicial, de modo que o recurso realmente não precisa ter pesado reutilização.

Você também pode ser surpreendido quanto tempo é gasto dentro de mal escritos consultas de banco de dados;tempo comum consultas geradas e ver se eles podem ser reconfigurados.A quantidade de tempo gasto para a execução real de código PHP é geralmente muito limitado, a menos que você estiver usando alguns sub-óptima algoritmos.

Nenhum destes são limitados para PHP, embora alguns PHP "magicy" abordagens/funções podem sobre-proteger a pessoa de pensar sobre essas preocupações.Por exemplo, eu recentemente actualizado um script que estava usando array_search usar uma pesquisa binária sobre um array ordenado, e ganhou o esperado exponencial speedup.

Realmente considerar o uso de XDebug profiler:ajuda com a verificação de quanto um determinado função está sendo executada contra o que você teria esperado.

Eu tento diminuir instruções melhorando a legibilidade do código, substituindo a lógica com a matriz pesquisas, quando apropriado.É o que Jeff Atwood escreveu em [O Melhor Código é Nenhum Código][1].

  • Também, evitar loops dentro de outro loop, e aninhados if/else.
  • Curta funções.Às vezes, um monte de o código não precisa ser executado quando o resultado-valor já é conhecido.
  • Testes desnecessários:

    if (count($array) === 0) return;

    também pode ser escrito como:

    if (!$array) retorno;

    Outra função chamada eliminados!

    [1]: http://www.codinghorror.com/blog/archives/000878.html"O Melhor Código é o Código Não Em Todos"

Você pode otimizado o código com duas coisas básicas:

Otimização de PHP associados e a biblioteca do servidor

Ir através de https://www.digitalocean.com/community/articles/how-to-optimize-apache-web-server-performance Ou

Você pode usar o perfil como ferramenta de xhprof para ver em que parte do código pode ser otimizado e aqui está o link a seguir: http://michaelsanford.com/compiling-xhprof-for-php-5-4/

A otimização do seu código usando o código profiler e analisador de código

Você precisará instalar o Netbeans para utilizar este plugin.Aqui estão os passos que você precisa seguir:

1) Abra o NetBeans, em seguida, selecione a opção de menu barra de Ferramentas > plug-in.Então plug-in de busca de nome "phpcsmd" disponíveis como plug-in guia e instalar a partir daí.

2) Agora, abra o terminal e de lá estar como super-usuário digitando o comando "sudo su".

3) Instalar o PEAR biblioteca (se não estiver instalado) em seu sistema executando comandos a seguir no seu terminal

a) wget http://pear.php.net/go-pear.phar
b) php go-pear.phar

Como esse documento é necessário para a instalação de novas addons.

4) em Seguida, execute o comando

"pear config-set auto_discover 1"

Este será usado para definir a auto descobrir o caminho "true" para os plugins necessários.Assim que conseguir instalar o para o local desejado automaticamente.

5) em Seguida, execute o comando abaixo para instalar o PHP o código de sniffer.

"pear install --alldeps pear/PHP_CodeSniffer"

6) Agora para instalar o PHP Bagunça Detector executando o seguinte comando

"pear install --alldeps phpmd/PHP_PMD"

Se você obter o erro como "erro de pacote/nome de arquivo de pacote "phpmd/PHP_PMD"" durante a instalação deste módulo.Você precisa usar este a "pêra canal descubra pear.phpmd.org" comando para livrar-se do erro.Após esse comando, você pode executar o comando acima novamente para instalar Bagunça detector.

7) Agora para instalar o PHP Dependem executando o seguinte comando

"pear install --alldeps pdepend/PHP_Depend"

8) Agora instale o PHP Copiar e Colar Detector executando o seguinte comando

"pear install --alldeps phpunit/phpcpd"

9) em Seguida, execute o comando

"pear config-set auto_discover 0"

Este será usado para definir automática descobrir o caminho "false".

10), em Seguida, abrir o net beans e siga o caminho Ferramentas>Opções>PHP>PHPCSMD

Não existe uma solução mágica, e tentar fornecer soluções genéricas poderia muito bem ser apenas um desperdício de tempo.

Onde estão os gargalos?Por exemplo, se o seu processador de scripts/banco de dados/uso intensivo de memória?

Você executou qualquer criação de perfil?

incluindo arquivos é lento, exigindo-las é ainda mais lento.Se você usar __autoload para a inclusão de cada classe, em seguida, que vai adicionar.por exemplo.

Eu sou sempre um pouco desconfiado de tentar ser muito inteligente em termos de optimização de código, se sacrifica código clairty.Se você precisa para tornar o código obscuro para torná-lo rápido, não seria mais barato para atualizar hardwear em vez de desperdiçar seu tempo tentando ajustar o código?Ciclos de processador são mais baratos do que programador ciclos, depois de tudo.

O que eu posso pensar...

  • Loop constantes são sempre um bom para assistir.

  • Escrever E_STRICT e E_NOTICE compatível com o código, especialmente se você são erros de log.

  • Evitar o @ operador.

  • Caminhos absolutos para requer e inclui.

  • Use strpos, str_replace etc.em vez de expressões regulares, sempre que possível.

Em seguida, há uma série de outros métodos que podem funcionar, mas, provavelmente, não vai dar-lhe muito o benefício.

Sempre que eu olhar para os problemas de desempenho, eu acho que a melhor coisa a fazer é quanto tempo suas páginas demoram a executar e, em seguida, olhar para o mais lento queridos.Quando esses real métricas, muitas vezes você pode melhorar o desempenho mais lento queridos por ordens de magnitude, quer através da fixação de um lento consulta SQL ou, talvez, tornar o código um pouco.

Este curso não requer um novo hardware ou software especial, apenas um olhar crítico sobre o código existente.

O que disse, isso só vai funcionar por tanto tempo...se você realmente está recebendo tráfego suficiente para bater os limites do seu hardware, e/ou existe algum código que é apenas inerentemente lento e realmente necessário, você terá que olhar para outras possibilidades.

Eu sou o responsável por um grande sistema de comunicação e que a faixa mais lenta relatórios goste disso.Eu fogo uma chave exclusiva para o db quando o relatório é iniciado e, em seguida, quando terminar eu posso determinar quanto tempo levou.Eu estou usando o banco de dados, porque dessa forma eu posso detectar quando o tempo limite de páginas (o que acontece muito mais do que eu gostaria)

Siga alguns dos outros conselhos, primeiro como criação de perfis e para a tomada de boas decisões de alocação de recursos, por exemplo,colocação em cache.

Também, levar em conta o desempenho dos recursos de fora, como o seu banco de dados.No MySQL você pode verificar o log de consultas lentas por exemplo.Além disso, certifique-se de que você não projetar o banco de dados de um esquecê-lo.Otimizando suas consultas (novamente para o MySQL) contra a dados reais pode pagar de grande.

Rasmus Lerdorf deu algumas dicas de bom em sua recente apresentação "Simples é Difícil"em FrOSCon '08.Se você estiver usando um bytecode (cache, e você realmente deve estar usando uma), incluem caminho saudade de doer muito, de modo a otimizar o seu exigem/require_once.

Você pode usar o perfil como ferramenta de xhprof para ver em que parte do código pode ser otimizado !

1) Utilize a versão mais recente do PHP

O núcleo equipe está trabalhando duro para melhorar o desempenho do PHP em cada versão.

2) Usar um bytecode cache

Desde o PHP 5.5 um bytecode cache foi adicionado ao PHP chamado OPcache.Usando OPcache pode fazer uma enorme diferença, especialmente desde o PHP 7.Ele recebe melhorias a cada versão do PHP e pode até conseguir um JIT implementação no futuro.

3) criação de perfil

Durante o desenvolvimento de criação de perfil dá-lhe uma excelente visão, o que exatamente está acontecendo.Isso ajuda muito a encontrar gargalos no código.

Uma das ferramentas mais utilizadas é XHProf mas não é oficialmente suportado mais e tem problemas com PHP >= 7.Uma alternativa quando você deseja que o perfil PHP >= 7 é Tideways o que é um fork do XHProf.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top