Em relação à eficiência de execução do PHP, existem muitos artigos especiais na Internet, a maioria dos quais são debates entre os campos PHP e Java. Diferentes aspectos de aplicação e diferentes ambientes de execução levarão a uma maior diferença na eficiência. Os aplicativos "grandes" mencionados aqui não se referem à implementação específica de grandes sites como Google, eBay e Yahoo. Só espero que seu sistema funcione de maneira mais rápida e suave e possa hospedar mais usuários online. pode dar uma ajudinha ao PHP para iniciantes.
Os "grandes" aplicativos mencionados aqui não se referem à implementação específica de grandes sites como Google, eBay e Yahoo. Não tenho intenção de persuadir os leitores a desistir de seus conceitos e crenças. Só espero que os sistemas de todos possam funcionar mais rápido. e mais suave. Ele pode hospedar mais usuários online e espero que possa ajudar os iniciantes em PHP.
Em relação à eficiência de execução do PHP, existem muitos artigos especiais na Internet. A maioria deles começa com o debate entre os campos PHP e Java e termina com expectativas incertas. Na verdade, é difícil derivar a eficiência de execução de um programa por meio de comparação. Diferentes aspectos de aplicação e diferentes ambientes de execução levarão a uma maior diferença na eficiência. E a eficiência também precisa ser avaliada. Todo mundo sabe que a linguagem assembly é de nível muito baixo e pode escrever programas muito eficientes. No entanto, raramente vi alguém usar assembly para desenvolvimento web e ter a capacidade de escrever programas em assembly. programadores eficientes parecem merecer o respeito de todos, haha ~ Não precisamos discutir a diferença entre PHP e assembly, desde que saibamos a diferença entre nosso próprio PHP e o PHP de outras pessoas.
Em primeiro lugar, vamos deixar claro a premissa deste artigo: deve haver um ou mais servidores que possam ser controlados por você, e não um espaço de host virtual. Afinal, já existem muitos trabalhos clássicos e estruturas maduras para sistemas de uso geral que podem ser executados em hosts virtuais. A mineração de eficiência foi muito bem executada pelos predecessores. Muitos de seus conceitos também foram herdados e desenvolvidos por muitos usuários atuais de PHP. Cada vez mais Quanto mais os chamados “frameworks” existem, são como estrelas no céu, não quero mais escrever sobre eles, porque em primeiro lugar o meu nível não é muito bom, não consigo escrever nada. novo, e mesmo se eu escrever, isso fará as pessoas rirem. Em segundo lugar, há muitos artigos escritos sobre isso e há muitas opiniões. A confusão é a maior culpada pela morte de muitos futuros programadores gênios apaixonados.
Há uma grande diferença na otimização da eficiência entre programas executados em um servidor dedicado e programas que podem ser executados em um host virtual. Claro, você pode instalar um conjunto de discuz em um ou até mesmo em vários servidores independentes sem modificação, mas isso realmente obtém a otimização máxima de desempenho? Você realmente merece esse conjunto de servidores?
Um servidor independente significa que o usuário tem controle total sobre a máquina, incluindo instalação e exclusão de software, configuração de parâmetros do sistema e até modificação do código-fonte. Com base em uma plataforma de hardware tão aberta, o desempenho não se reflete apenas na velocidade, mas também inclui segurança, estabilidade, etc. Ao contrário dos hosts virtuais, os usuários devem configurar os parâmetros do servidor web, instalar e configurar PHP, bancos de dados e instalar todos os tipos de coisas complicadas (como gosto de dizer) por conta própria e, claro, devem ser responsáveis por eles.
Primeiro, vamos apresentar alguns termos: tempo de execução, modelo, encapsulamento de banco de dados, Cache, Buffer, Hash, daemon e crontab.
Todo mundo sabe que o tempo de execução é o tempo que um programa leva do início ao fim. Como a Web é transitória e sem estado, o tempo de execução é um indicador da eficiência de execução do programa Web. Ele não é adequado para medir programas C/S ou programas daemon em segundo plano porque muitos deles são executados continuamente. Um exemplo típico de tempo de execução de página é o tempo exibido na parte inferior da página do fórum do Discuz. Normalmente, o Discuz varia de alguns milissegundos a dezenas de milissegundos, dependendo da plataforma usada, da quantidade de dados e da pressão atual do sistema.
Todos estão familiarizados com os modelos. Embora muitas pessoas simplesmente os usem, elas não sabem por que os usam. Os modelos são tradicionalmente uma forma de dividir as camadas lógicas. Na estrutura superior do MVC, separam a camada de apresentação da camada inferior. No uso real, facilitam a divisão do trabalho entre programadores e designers de interface. No entanto, em muitos casos agora, devido ao uso indevido de modelos, em vez de promover a divisão do trabalho e a cooperação entre programadores e designers de interface, tornou-se o principal culpado do ódio mútuo entre programadores e artistas (acho que disse isso em uma postagem anterior), muitas pessoas reclamam que precisam gastar muito tempo organizando modelos.
O encapsulamento de banco de dados parece estar mais relacionado ao Java. Ele fornece uma interface de chamada unificada para vários sistemas de banco de dados, geralmente algumas classes encapsuladas. Essas classes às vezes também completam algumas tarefas, como verificação de SQL, filtragem, etc. Empacotamento DB, PEAR DB, Adodb, etc. em PHPLIB são todos famosos e usados por muitas pessoas.
Cache e Buffer parecem ser a mesma coisa, Cache é chamado de cache e Buffer é chamado de buffer. No conceito de hardware, o objetivo do Cache é conectar dois dispositivos com velocidades diferentes, como registros e memória, CPU e barramento PCI, barramento IDE e disco rígido. O significado original de Buffer é um amortecedor em forma de mola, algo usado para reduzir ou absorver o choque do impacto. Buffer é um método de pré-acesso a dados usado para armazenar dados temporariamente e transmiti-los a uma velocidade diferente da velocidade de recepção. O método de atualização do buffer pode ser atualizado automaticamente de acordo com intervalos de tempo, enquanto o cache presta mais atenção à "taxa de acertos" e coloca uma pequena quantidade de dados que são frequentemente usados no período atual em um dispositivo de alta velocidade para facilitar a leitura. e escrita. No desenvolvimento de programas, embora não existam dispositivos de alta ou baixa velocidade, as fontes de dados podem ter diferentes eficiências de leitura e gravação. Para uma pequena quantidade de dados, a leitura e gravação de arquivos de texto são geralmente mais eficientes do que o acesso ao banco de dados, e a mesma eficiência de leitura e gravação de arquivos de texto em tmpfs é melhor do que a eficiência de IO direta do disco. O buffer é mais refletido na comunicação do processo e nas filas. Em muitos casos, não é porque o receptor não consegue ler mais rápido, mas porque não há necessidade de ler mais rápido.
Um processo daemon é um programa executado continuamente em segundo plano. Geralmente desempenha uma função no monitoramento, controle de processos e fornecimento de serviços externos. Por exemplo, o próprio Apache pode ser entendido como um processo daemon, embora na verdade seja composto por muitos processos que são atualizados com frequência (o processo principal é fixo).
Crontab é um programa agendado UNIX/Linux, que é um pouco como as "tarefas agendadas" do Windows. Ele define um determinado intervalo de tempo ou um determinado momento para executar um programa específico. Geralmente é usado para concluir atualizações automáticas, limpar dados temporários e outras operações que são executadas automaticamente uma vez em um período de tempo.
Outro conceito especial (especialmente para pessoas que estão acostumadas com o desenvolvimento geral de sistemas) é que depois de termos um servidor independente, não há necessidade de nos limitarmos às funções que o PHP pode fornecer. devemos trabalhar duro para perceber isso. Há muitas coisas que podemos usar. PHP não é onipotente (isso é certo), e suas deficiências funcionais podem ser completamente compensadas pelo Perl. Como linguagem geral, Perl pode fornecer mais opções funcionais, e seus módulos são tão densos quanto a linguagem casual e pervertida. energia. Para deficiências de desempenho do PHP, C pode ser usado para compensar. A base do PHP é herdada de C. O próprio PHP também é desenvolvido por C. É completamente razoável usar C para estender o PHP.
O próprio Linux é suportado por C e Perl (digo isso para não exagerar o status do Perl. Você pode ver quantos scripts Perl existem em um Linux padrão e ver se o sistema parece uma pessoa deficiente sem Perl). O PHP herdou a maior parte de sua sintaxe de C e aprendeu a maioria dos recursos da Web, funções e o símbolo "$" que parece ser contraditório ao código aberto do Perl (o PHP era um script Perl em seus primeiros dias).
Vamos analisar alguns dos códigos que estou usando (Nota: aplicável a servidores autônomos Linux. Parece que há muito tempo desisti do desenvolvimento em larga escala para Windows e hosts virtuais). Ele usa alguns métodos que podem ser familiares, desconhecidos ou anormais. Meu sistema é RedHat AS3, nada de especial, a versão PHP é 4.4.0, MySQL é 4.1. Eu nunca escrevo intencionalmente código que deva usar os novos recursos do PHP5, a menos que seja realmente necessário.
Meu diretório raiz da Web está em /www. Apache e PHP são instalados em /usr/local/ por padrão. MySQL é uma versão binária baixada e compilada, e também deixo lá. Como é apenas para teste, não quero que pareça confuso. Quanto aos projetos reais, especialmente no caso de vários servidores, você precisa implantar bem o seu sistema.
Para deixar a estrutura do sistema mais clara, coloco todos os arquivos que preciso utilizar no diretório secundário.
Aqui estão alguns trechos do arquivo de cabeçalho comum /includes/kernel/common.inc.php:
﹤?php
if (!definido('IN_BSG')) {
saída;
}
?﹥
O código acima garante que só poderá ser chamado por programas legais e não será incluído por outros arquivos. Se o programa em execução não definir uma constante 'IN_BSG', ele será encerrado após incluir este common.inc.php.
﹤?php
list($usec, $sec) = explode(" ", microtime());
$page_time_start = $usec + $sec;
?﹥
Todos devem estar familiarizados com essas duas linhas, que servem para calcular o tempo de início de execução do programa. Antes de o programa terminar, isso é calculado novamente para descobrir o tempo que levou para executar o programa. Se você não se importa com isso, pode comentar com segurança.