PHP e prestazioni


17

Ho sempre sentito che PHP è per siti Web medi e piccoli mentre .NET e Java per applicazioni aziendali. La mia domanda riguarda PHP. Perché PHP non è una buona opzione per le applicazioni web aziendali? È perché se l'applicazione Web diventa più grande allora PHP sarà più lento in quanto è un linguaggio interpretato?

So che il mondo aziendale sceglierà .NET o J2EE a causa dell'integrazione con i loro prodotti e dei servizi di back-end, ecc. Tuttavia, se abbiamo solo PHP per la creazione di siti e applicazioni Web, come possiamo usarlo per funzionare bene con grandi siti?

In breve, esiste una relazione tra le prestazioni di PHP e le dimensioni del sito Web? Quali sono i fattori che rendono l'opzione PHP non appropriata per i siti di grandi dimensioni?


1
Mediawiki (il motore di Wikipedia) è scritto in PHP e l'hanno fatto funzionare bene, ma questo non dimostra nulla. Potrebbe essere un caso di nicchia.
Michael K,

2
@MichaeltheGhost che utilizza siti nella top 50 di Alexa (e forse anche un po 'di più) sono esempi scadenti perché il loro volume è a un livello così estremo che le loro soluzioni sono altamente personalizzate e ottimizzate per quel livello di traffico e non sono proprio le stesse più tecnologia.
Ryathal,

1
Anche Facebook utilizza PHP. Nota anche che questo significa cose sulla scalabilità, non sulle prestazioni, ma conosci la differenza, giusto? Un altro esempio è freemobile, che ha riscritto il suo sito Web in PHP da Java, per motivi di scalabilità.
deadalnix

"Attualmente, la maggior parte del codice PHP in Mediawiki presso Wikimedia Foundation utilizza il compilatore HHVM JIT, sebbene alcuni servizi continuino a utilizzare Zend Engine PHP." en.wikipedia.org/wiki/Wikipedia:FAQ/Tecnical è ciò che Facebook ha creato per accelerare php (è un traduttore da php a c ++ che poi compilano). funziona, solo che non puoi dire solo perché è scritto in php la velocità sarà sempre la stessa. Dipende da cosa fai con il codice in quel senso ...
pqsk

Risposte:


19

Le prestazioni probabilmente non sono uno dei fattori. Per un linguaggio dinamico, PHP in realtà funziona abbastanza bene; a seconda dell'attività, potrebbe o meno battere altre tecnologie. Il modello dell'applicazione è semplicemente troppo diverso per confrontarlo direttamente con Java o ASP.NET. Anche se c'è una differenza di velocità misurabile, non è grande ed è probabilmente lineare, il che significa che può essere risolto lanciando più hardware. Inoltre, il linguaggio di programmazione stesso è raramente il collo di bottiglia: algoritmi, accesso al database, larghezza di banda di rete e I / O in generale sono i soliti colpevoli, a meno che non si stia scrivendo qualcosa di veramente ad alta intensità di CPU.

I motivi per utilizzare ASP.NET o Java su PHP che sono più probabili includono:

  • Integrazione della piattaforma. ASP.NET offre un'ampia integrazione con .NET e il sistema operativo Windows sottostante.
  • Purposeness generale. PHP è stato progettato specificamente per il Web, mentre .NET e Java sono piattaforme di uso generale. Usando Java o .NET, puoi applicare sia front-end desktop che web allo stesso codice condiviso con poco sforzo, mentre PHP non è molto adatto per scrivere applicazioni desktop.
  • Funzionalità di organizzazione del codice. Java e .NET sono stati progettati per OOP sin dall'inizio, mentre OOP in PHP è in qualche modo un ripensamento. PHP ha introdotto gli spazi dei nomi di recente e sono limitati e goffi rispetto a ciò che .NET e Java hanno da offrire. La programmazione di tipo aziendale di solito si basa fortemente su OOP, il che rende PHP il candidato minore.

Un altro motivo per l'effetto percepito è che PHP è gratuito (come nella birra) e onnipresente: ogni compagnia di web hosting condivisa a basso costo ha PHP nel suo pacchetto standard, ma un server .NET o Java ti costerà molto di più. Di conseguenza, un'enorme massa di piccoli siti Web utilizza PHP, non perché è lo strumento migliore per il lavoro, ma l'unico a portata di mano.

Questo non vuol dire che PHP non sia adatto a progetti di grandi dimensioni - semplicemente non va bene con il tipo di programmazione "enterprise". I suoi punti di forza risiedono altrove e, se puoi sfruttarli, puoi creare facilmente applicazioni su larga scala come con qualsiasi altra tecnologia web.


2
Un piccolo cavillo, puoi ottenere l'hosting condiviso ASP.NET allo stesso prezzo dell'hosting condiviso LAMP. Il problema è che i primi posti che la maggior parte delle persone trova durante la ricerca sono quelli commercializzati per le piccole e medie imprese e sono più costosi.
jfrankcarr,

+1, questo è molto ben detto e riassunto. Il collo di bottiglia per la maggior parte delle applicazioni con prestazioni scadenti è raramente la lingua.
GrandmasterB

1
vero, ma non pensare che Java sia una soluzione: ho avuto la sfortuna di usare molte app "Enterprise" di aziende come Oracle. Quasi tutti potrebbero essere sostituiti con un'app PHP OSS con una piccola riduzione delle funzionalità, ma un enorme aumento delle prestazioni e dell'usabilità.
gbjbaanb,

3
@gbjbaanb: Java non è una soluzione in questo contesto perché non ci sono problemi. E se qualcosa è open source o no non ha assolutamente nulla a che fare con l'argomento.
martedì

@GrandmasterB sì e no. Java ad esempio, ha molte primitive sincronizzate internamente e PHP no. Richiede più disciplina per scrivere codice java scalabile. Freemobile è un esempio reale di questo effetto. Tuttavia, poiché la scalabilità non dipende solo dal frontend (ad esempio i database sono molto importanti qui) è necessario pensarci comunque.
deadalnix

13

Stai confondendo il traffico ("sito Web di piccole e medie dimensioni" di solito significa un sito Web con traffico di piccole e medie dimensioni), con il grado di complicanza della logica aziendale (sito Web semplice vs soluzione aziendale). Nel secondo caso, le prestazioni non sono il fattore chiave.

Ad esempio Facebook è un sito Web ad alto traffico, ma non è un'app aziendale. D'altra parte ci sono moltissime intranet basate su server di applicazioni Java, che non sarebbero in grado di gestire il traffico di siti Web di medie dimensioni.

PHP dal punto di vista delle prestazioni non è l'opzione migliore, ma non è neanche così male. Soprattutto a confronto con altri linguaggi dinamici. Tuttavia, ancora una volta, le prestazioni grezze non sono il fattore più importante. La creazione di siti Web ad alto traffico riguarda di più l'ottimizzazione per la scalabilità a livello di architettura.


Perché PHP è così disprezzato dalle imprese? Ci sono poche cause, prima sarebbe la sua terribile reputazione sulla sicurezza . Il secondo è che viene percepito come un linguaggio per i dilettanti che creano brutti e ingestibili codici di spaghetti HTML-PHP. Tale percezione persiste, anche se ci sono framework MVC maturi. Immagino che avere l'autore originale di PHP sostenga che non hai bisogno di un framework non aiuta. Il fatto che questi dilettanti indifesi con poca o nessuna abilità di programmazione si definiscano "programmatori PHP" non aiuta neanche. La terza ragione è che qualsiasi programmatore esperto sarà d'accordo, che PHP è semplicemente mal progettato come lingua. Puoi vedere chiaramente che è stato progettato da un webmaster,

E sì, nelle aziende si tratta di integrazione di sistema, in cui PHP non brilla neanche. Con sufficiente sforzo è possibile creare moduli C. C'è un bridge PHP-Java, che è abbastanza noioso da usare. Oltre a ciò non hai molto. I tentativi di creare Boost :: PHP (integrazione con C ++) non sono riusciti. I cloni PHP in esecuzione su JVM sono lungi dall'essere qualcosa di simile al 100% di compatibilità con PHP (come nota a margine, non esiste una definizione formale del linguaggio PHP, l'unico riferimento è l'implementazione predefinita).


6

Non ho idea del perché le persone sostengano che PHP sia per siti Web di piccole e medie dimensioni. Per quanto ne so, questo non è vero. Conosco alcuni siti Web supportati da PHP che sono iniziati in piccolo, poi sono diventati i primi 100 siti Web nel mio paese. Usano ancora PHP e non hanno intenzione di cambiare nulla al riguardo.

La cosa che potrebbe spingere le persone a tale conclusione è che nel caso di Java (e immagino anche con .NET) lo scalling delle applicazioni è un termine spesso riportato nella documentazione e nella letteratura. La maggior parte dei server di applicazioni là fuori supporta una qualche forma di clustering che consente una rapida aggiunta di "potenza" insieme alla crescita della popolarità. In caso di PHP devi creare tu stesso un cluster. Puoi farlo in molti modi, utilizzando diversi componenti e devi conoscere un paio di cose sul funzionamento interno di PHP. Questo probabilmente fa pensare alle persone che con PHP un singolo server (e quindi un sito Web di piccole o medie dimensioni) sia un vicolo cieco per PHP.


3

Non esiste una sola applicazione web aziendale. Nel mondo aziendale in genere hai un sistema aziendale completo, in cui la web part è piuttosto piccola rispetto all'intero sistema. Ci sono molti sistemi sotto il Web che eseguono l'elaborazione in batch, i messaggi di coda, l'integrazione aziendale, i gateway e molti altri. Evento in alto potrebbe non esserci solo

Mentre PHP è buono per il web non è così buono per gli altri tipi di sistemi distribuiti. E dal momento che esegui tutti questi sistemi in Java o .NET, è anche facile creare lo stack Web sulla stessa piattaforma anziché in PHP.


1

Direi che i problemi con PHP derivano meno dalle prestazioni di una storia di vulnerabilità della sicurezza. Mentre è senza dubbio possibile scrivere un sito Web di qualsiasi dimensione o complessità particolare in PHP e mantenere comunque la sicurezza, con l'aumentare della complessità, il mantenimento della sicurezza tende a diventare più difficile.

Java, d'altra parte, è stato progettato con almeno alcune idee sulla sicurezza fin dal primo giorno. Sebbene quelli non si adattino interamente alla maggior parte dell'attuale implementazione (il pensiero originale era principalmente sulle applet, non sui servel) che l'enfasi significa che le sue caratteristiche tendono ad adattarsi meglio con la produzione di codice sicuro. E, naturalmente, non si è ancora fermato - poiché ora le applet sono per lo più un problema morto, Java è stato ridefinito per enfatizzare il ruolo sul lato server che occupa (principalmente).

Dal momento che .NET cerca almeno di competere quasi direttamente con Java, offre in questo modo lo stesso tipo di funzionalità e capacità. Puoi discutere (e aderiscono ad entrambi i campi) sul fatto che Sun o Microsoft facciano un lavoro migliore in questo senso, ma il semplice fatto che entrambi abbiano team di persone che stanno davvero cercando di lavorarci offre loro un vantaggio abbastanza serio rispetto a PHP in questo rispetto.


0

1) Prestazioni: diverse risposte qui sono fuorvianti su questo punto.
Il progetto Phalanger (che ho usato con successo in passato) ti consente di utilizzare il codice C # all'interno di PHP e viceversa, o di passare completamente dall'una all'altra lingua. Probabilmente dovrai apportare alcune modifiche, ma man mano che continuano a lavorarci su, diventa sempre meglio.
Il mio punto è che hanno scoperto che esiste un fattore medio di 2,5 velocità a favore di C # (o .NET in generale, VB farebbe lo stesso, alla fine è MSIL).
Dai un'occhiata ai loro test con Wordpress, ha attirato molti sviluppatori.

Ora non l'abbiamo ancora visto, ma c'è sempre il tipo che ti dirà che FaceBook è scritto in PHP. Sbagliato. Inizialmente, è stato fino a quando hanno capito il loro errore e hanno scritto HipHop per trasformarlo in C ++.

EDIT: A quanto pare che l'ultimo blocco è chiaro, quindi quello che volevo dire è Facebook È scritto in PHP, ma HipHop rende RUN come C ++, per migliorare la velocità complessiva, PERCHE ' PHP è lento.

2) Sicurezza: come è già stato affermato, PHP ha una lunga storia di problemi di sicurezza.

3) Tempo di sviluppo: creare un sito Web in PHP tende ad essere più facile, specialmente con i framework e tutti i "costruttori di siti" disponibili. Creare un sito Web PHP valido, affidabile e sicuro è un'altra storia.


Per quanto riguarda la cosa di Facebook / HipHop, non cambia molto. Scrivono ancora dichiarazioni PHP, vero? C'è anche un compilatore da PHP a Java. Se compilo tutto il mio codice PHP con esso, significa che il mio sito è davvero scritto in Java?
Jacek Prucia,

Non significa che è Java, significa che viene eseguito come tale.
Louis Kottmann,

Ok, hai ragione, ma posso ancora affermare che il mio sito è scritto in PHP? Se sì, allora chiunque può anche affermare che Facebook è scritto in PHP. In altre parole, tutto si riduce alla comprensione del termine "linguaggio di programmazione". È solo la combinazione di istruzioni valide o è anche ambiente di runtime. Preferisco il primo significato ed è per questo che la cosa HipHop non cambia molto per me. Sono praticamente quel tipo di FaceBook che hai menzionato :)
Jacek Prucia,

Va bene, lo renderò più chiaro. Ma per la cronaca, sono abbastanza sicuro che la maggior parte dei lettori abbia capito il mio punto.
Louis Kottmann,

Non è stato un errore scrivere Facebook originariamente in PHP. Quando hanno scoperto che non riusciva a tenere il passo con la scalabilità che hanno visto, hanno risolto il problema utilizzando HipHop. Immagino che ciò significhi che l'utilizzo di PHP è un'ottima opzione per tutti i siti Web. Detto questo, Slashdot usa il perl e ha risolto il problema della scala, Wikipedia utilizza PHP semplice e anche questo non ha problemi di scala.
gbjbaanb,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.