PHP e desempenho


17

Eu sempre ouvi dizer que o PHP é para sites de médio e pequeno porte, enquanto o .NET e Java para aplicativos corporativos. Minha pergunta é sobre PHP. Por que o PHP não é uma boa opção para aplicativos da Web corporativos? É porque se o aplicativo da Web se tornar maior, o PHP será mais lento, pois é uma linguagem interpretada?

Sei que o mundo corporativo escolherá o .NET ou J2EE por causa da integração com seus produtos e por serviços de back-end, etc. sites grandes?

Em resumo, existe uma relação entre o desempenho do PHP e o tamanho do site? Quais são os fatores que tornam o PHP uma opção inadequada para sites grandes?


1
O Mediawiki (mecanismo da wikipedia) é escrito em PHP e eles o fizeram funcionar bem, mas isso não prova nada. Pode ser um caso de nicho.
Michael K

2
@MichaeltheGhost usando sites no top 50 do Alexa (e talvez até um pouco mais) são exemplos ruins porque o volume está em um nível tão extremo que suas soluções são altamente personalizadas e ajustadas para esse nível de tráfego e não são realmente as mesmas tecnologia mais.
Ryathal 16/03/12

1
O Facebook também está usando PHP. Observe também que isso significa coisas sobre escalabilidade, não desempenho, mas você sabe a diferença, certo? Outro exemplo é o freemobile, que reescreveu seu site em PHP a partir de Java, por motivos de escalabilidade.
deadalnix

"Atualmente, a maior parte do código PHP no Mediawiki da Wikimedia Foundation usa o compilador HHVM JIT, embora alguns serviços continuem usando o Zend Engine PHP." pt.wikipedia.org/wiki/Wikipedia:FAQ/Técnico é o que o Facebook criou para acelerar o php (é um tradutor de php para c ++ que eles compilam). funciona, só não dá pra dizer só porque está escrito em php a velocidade sempre será a mesma. Depende do que você faz com o código nesse sentido ...
pqsk

Respostas:


19

O desempenho provavelmente não é um dos fatores. Para uma linguagem dinâmica, o PHP realmente funciona muito bem; dependendo da tarefa, pode ou não superar outras tecnologias. O modelo de aplicativo simplesmente é muito diferente para compará-lo diretamente com Java ou ASP.NET. Mesmo que haja uma diferença de velocidade mensurável, ela não é grande e provavelmente é linear, o que significa que pode ser resolvida jogando mais hardware nela. Além disso, a própria linguagem de programação raramente é o gargalo - algoritmos, acesso ao banco de dados, largura de banda da rede e E / S em geral são os culpados comuns, a menos que você esteja escrevendo algo realmente intensivo em CPU.

Os motivos para usar o ASP.NET ou Java sobre PHP com maior probabilidade incluem:

  • Integração de plataforma. O ASP.NET oferece ampla integração com o .NET e o sistema operacional Windows subjacente.
  • Objetivo geral. O PHP foi projetado especificamente para a Web, enquanto .NET e Java são plataformas de uso geral. Usando Java ou .NET, você pode agregar front-end de desktop e web no mesmo código compartilhado com pouco esforço, enquanto o PHP não é muito adequado para escrever aplicativos de desktop.
  • Recursos de organização de código. Java e .NET foram projetados para OOP desde o início, enquanto OOP em PHP é um pouco tardio. O PHP introduziu namespaces muito recentemente, e eles são limitados e desajeitados em comparação com o que .NET e Java têm a oferecer. A programação no estilo corporativo geralmente depende muito do OOP, o que torna o PHP o candidato menos.

Outra razão para o efeito percebido é que o PHP é gratuito (como na cerveja) e onipresente - toda empresa barata de hospedagem compartilhada tem PHP em seu pacote padrão, mas um servidor .NET ou Java vai custar muito mais. Consequentemente, uma enorme massa de sites pequenos usa PHP, não porque é a melhor ferramenta para o trabalho, mas a única disponível.

Isso não quer dizer que o PHP não seja adequado para grandes projetos - simplesmente não combina bem com o tipo de programação 'empreendedor'. Seus pontos fortes estão em outros lugares e, se você puder aproveitá-los, poderá criar aplicativos de larga escala com a mesma facilidade que poderia com qualquer outra tecnologia da web.


2
Uma pequena queixa, você pode obter hospedagem compartilhada do ASP.NET pelo mesmo preço que a hospedagem compartilhada LAMP. O problema é o primeiro lugar que a maioria das pessoas encontra quando está pesquisando no mercado para pequenas e médias empresas e é mais caro.
jfrankcarr

+1, isso é muito bem dito e resumido. O gargalo para a maioria dos aplicativos com desempenho ruim raramente é o idioma.
GrandmasterB

1
verdade, mas não pense que o Java é uma solução - tive a infelicidade de usar muitos aplicativos 'Enterprise' de empresas como Oracle. Quase todos eles podem ser substituídos por um aplicativo PHP OSS com pouca redução na funcionalidade, mas um enorme aumento no desempenho e na capacidade de uso.
precisa

3
@gbjbaanb: Java não é uma solução neste contexto, porque não há problema. E se algo é de código aberto ou não, não tem absolutamente nada a ver com o tópico.
Tâmaras #

@GrandmasterB sim e não. Java, por exemplo, tem muitas primitivas sincronizadas internamente, e PHP não. Exige mais disciplina para escrever código java escalável. o freemobile é um exemplo do mundo real desse efeito. Mas, como a escalabilidade não depende apenas do frontend (bancos de dados, por exemplo, são muito importantes aqui), você precisa pensar sobre isso de qualquer maneira.
deadalnix

13

Você está confundindo tráfego ("site pequeno e médio" geralmente significa um site com tráfego pequeno a médio), com o grau de complicação da lógica de negócios (site simples versus solução corporativa). No segundo caso, o desempenho não é o fator chave.

Por exemplo, o Facebook é um site de alto tráfego, mas não é um aplicativo corporativo. Por outro lado, existem inúmeras intranets baseadas em servidores de aplicativos Java, que não seriam capazes de lidar com o tráfego de sites de médio porte.

O PHP em termos de desempenho não é a melhor opção, mas também não é tão ruim assim. Especialmente comparando com outras linguagens dinâmicas. No entanto, novamente, o desempenho bruto não é o fator mais importante. Criar sites de alto tráfego é mais para otimizar a escalabilidade no nível arquitetural.


Por que o PHP é tão desprezado pela empresa? Existem poucas causas, primeiro seria a terrível reputação de segurança . Segundo, é percebido como uma linguagem para amadores que criam códigos espaguetes HTML-PHP feios e incontroláveis. Essa percepção persiste, apesar de existirem estruturas maduras de MVC. Eu acho que ter o autor original do PHP argumentar que você não precisa de uma estrutura não ajuda. O fato de esses amadores sem noção, com pouca ou nenhuma habilidade de programação, se chamarem "programadores PHP" também não ajuda. A terceira razão é que qualquer programador experiente concorda, que o PHP é mal projetado como uma linguagem. Você pode ver claramente que ele foi projetado por um webmaster,

E sim, na empresa, tudo se resume à integração do sistema, onde o PHP também não brilha. Com esforço suficiente, você pode criar módulos C. Há uma ponte PHP-Java, que é bastante entediante de usar. Além disso, você não tem muito. Tentativas de criar o Boost :: PHP (integração com C ++) falharam. Os clones do PHP em execução na JVM estão longe de ter quase 100% de compatibilidade com o PHP (como observação lateral, não há definição formal da linguagem PHP, a única referência é a implementação padrão).


6

Não faço ideia por que as pessoas afirmam que o PHP é para sites pequenos e médios. Que eu saiba, isso não é verdade. Conheço alguns sites com suporte ao PHP que começaram pequenos e depois se tornaram os 100 melhores sites do meu país. Eles ainda usam PHP e não têm planos de mudar nada sobre isso.

A coisa que pode levar as pessoas a essa conclusão é que, no caso de Java (e eu acho que também com .NET), escalonamento de aplicativo é um termo frequentemente mencionado na documentação e na literatura. A maioria dos servidores de aplicativos por aí suporta alguma forma de cluster, que permite a rápida adição de "potência" juntamente com o crescimento da popularidade. No caso do PHP, você deve criar um cluster por conta própria. Você pode fazer isso de várias maneiras, usando componentes diferentes e precisa conhecer um pouco ou dois sobre o funcionamento interno do PHP. Isso provavelmente faz as pessoas pensarem que, com o servidor único PHP (e, portanto, com sites pequenos ou médios), é um beco sem saída para o PHP.


3

Não existe apenas um aplicativo Web corporativo. No mundo corporativo, você normalmente tem um sistema corporativo completo, onde a Web Part é bem pequena em comparação com todo o sistema. Existem muitos sistemas na Web que executam processamento em lote, mensagens em fila, integração corporativa, gateways e muito mais. Evento no topo pode não haver apenas

Enquanto o PHP é bom para a web, não é tão bom para os outros tipos de sistemas distribuídos. E como você faz todos esses sistemas em Java ou .NET, é fácil também criar a pilha da Web na mesma plataforma, e não em PHP.


1

Eu diria que os problemas com o PHP derivam menos do desempenho do que um histórico de vulnerabilidades de segurança. Embora seja indubitavelmente possível escrever um site de qualquer tamanho ou complexidade em PHP e ainda manter a segurança, à medida que a complexidade aumenta, a manutenção da segurança tende a se tornar mais difícil.

O Java, por outro lado, foi projetado com pelo menos algumas idéias sobre segurança desde o primeiro dia. Embora aqueles não se encaixem totalmente na maioria das implementações atuais (o pensamento original era principalmente sobre applets, não servelets), essa ênfase significa que seus recursos tendem a se encaixar melhor na produção de código seguro. E, é claro, também não ficou parado - como os applets são atualmente um problema morto, o Java foi redefinido para enfatizar a função do servidor que agora ocupa (principalmente).

Como o .NET pelo menos tenta competir quase diretamente com o Java, ele fornece praticamente o mesmo tipo de recursos nesse sentido. Você pode argumentar (e os adeptos de ambos os campos) sobre se a Sun ou a Microsoft fazem um trabalho melhor nesse sentido, mas o simples fato de ambos terem equipes de pessoas realmente tentando trabalhar com isso oferece uma vantagem bastante séria sobre o PHP neste respeito.


0

1) Desempenho: várias respostas aqui estão sendo enganadas nesse ponto.
O projeto Phalanger (que usei com sucesso no passado) permite que você use o código C # no PHP e vice-versa, ou alterne completamente de um idioma para o outro. Você provavelmente terá que fazer algumas alterações, mas, à medida que elas continuam trabalhando, fica cada vez melhor.
Meu argumento é que eles descobriram que existe um fator médio de 2,5 velocidades a favor do C # (ou .NET em geral, o VB faria o mesmo, é MSIL no final).
Confira os testes com o Wordpress, que atraiu muitos desenvolvedores.

Agora ainda não o vimos, mas sempre há o cara que lhe dirá que o FaceBook está escrito em PHP. Errado. Foi até que eles perceberam seu erro e escreveram o HipHop para transformá-lo em C ++.

EDIT: Aparentemente, esse último bloco é claro, por isso que eu quis dizer é FaceBook É escrito em PHP, mas HipHop torna RUN como C ++, para melhorar a velocidade geral, PORQUE PHP é lento.

2) Segurança: Como já foi afirmado, o PHP tem um longo histórico de problemas de segurança.

3) Tempo do desenvolvedor: criar um site em PHP tende a ser mais fácil, especialmente com as estruturas e todos os "construtores de sites" disponíveis. Criar um site PHP bom, confiável e seguro é outra história.


Quanto ao Facebook / HipHop, isso não muda muito. Eles ainda escrevem instruções PHP, não é? Há também o compilador PHP para Java. Se eu compilar todo o meu código PHP com ele, isso significa que meu site está realmente escrito em Java?
Jacek Prucia

Isso não significa que é Java, significa que é executado como tal.
Louis Kottmann

Ok, você está certo, mas ainda posso afirmar que meu site está escrito em PHP? Se sim, qualquer pessoa também pode alegar que o Facebook está escrito em PHP. Em outras palavras, tudo se resume a como você entende o termo "linguagem de programação". É apenas a combinação de instruções válidas ou também é ambiente de tempo de execução. Eu prefiro o primeiro significado e é por isso que a coisa do HipHop não muda muito para mim. Então, basicamente eu estou que FaceBook cara que você mencionou :)
Jacek Prucia

Tudo bem, eu vou deixar mais claro. Mas, para o registro, tenho certeza de que a maioria dos leitores entendeu meu argumento.
Louis Kottmann

Não foi um erro escrever o Facebook originalmente em PHP. Quando descobriram que não conseguia acompanhar a escalabilidade que viam, corrigiram o problema usando o HipHop. Eu acho que isso significa que usar PHP é uma opção muito boa para todos os sites. Dito isto, o Slashdot usa o perl direto e resolveu o problema de escala, a wikipedia usa PHP simples e também não tem problemas de escala.
precisa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.