PHP e prestazioni

17

Ho sempre sentito che PHP è per siti web di medie e piccole dimensioni, 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 è una lingua interpretata?

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

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 grandi siti?

    
posta Naif 16.03.2012 - 14:18
fonte

6 risposte

18

Le prestazioni non sono probabilmente uno dei fattori. Per un linguaggio dinamico, PHP in realtà funziona piuttosto 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 aggiungendo altro hardware. Inoltre, il linguaggio di programmazione di per sé è raramente il collo di bottiglia: algoritmi, accesso al database, larghezza di banda della rete e I / O in generale sono i soliti colpevoli, a meno che non si stia scrivendo qualcosa di veramente intensivo della CPU.

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

  • Integrazione della piattaforma. ASP.NET offre un'ampia integrazione con .NET e il sistema operativo Windows sottostante.
  • Purosità generale. PHP è stato progettato specificamente per il web, mentre .NET e Java sono piattaforme general-purpose. Usando Java o .NET, puoi affrontare frontend sia desktop che web sullo stesso codice condiviso con poco sforzo, mentre PHP non è molto adatto per la scrittura di applicazioni desktop.
  • Funzionalità dell'organizzazione del codice. Java e .NET sono stati progettati per OOP fin dall'inizio, mentre OOP in PHP è in qualche modo un ripensamento. PHP ha introdotto gli spazi dei nomi molto recentemente, e sono limitati e maldestri rispetto a quanto .NET e Java hanno da offrire. La programmazione in stile Enterprise di solito si basa in gran parte 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 società di hosting web condiviso 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é sia 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 "di livello enterprise". I suoi punti di forza si trovano altrove, e se puoi sfruttarli, puoi facilmente creare applicazioni su larga scala come con qualsiasi altra tecnologia web.

    
risposta data 16.03.2012 - 14:43
fonte
13

Stai confondendo il traffico ("sito web di piccole e medie dimensioni" di solito significa un sito web con un traffico medio-piccolo), con il grado di complicazione della logica aziendale (semplice sito Web o soluzione aziendale). Nel secondo caso la performance non è 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 non è l'opzione migliore dal punto di vista delle prestazioni, ma non è neanche così male. Soprattutto confrontando con altri linguaggi dinamici. Tuttavia, ancora una volta, le prestazioni non elaborate non sono il fattore più importante. Creare siti Web ad alto traffico significa più ottimizzare la scalabilità a livello di architettura.

Perché il PHP è così disprezzato dalle aziende? Ci sono poche cause, prima sarebbe la terribile reputazione di sicurezza . In secondo luogo, è percepito come un linguaggio per i dilettanti che crea un brutto codice di spaghetti HTML-PHP ingestibile. Quella percezione persiste, anche se ci sono framework MVC maturi. Credo che avere l'autore originale di PHP sostenga che non è necessario un framework non aiuta. Il fatto che questi dilettanti clueless con poche o nessuna abilità di programmazione si definiscano "programmatori PHP" non aiuta neanche. La terza ragione è che qualsiasi programmatore esperto sarà d'accordo, che PHP è solo mal progettato come linguaggio. Puoi vedere chiaramente che è stato progettato da un webmaster, mentre la maggior parte delle moderne lingue dinamiche sono state progettate da accademici post-laurea specializzati in compilatori e design del linguaggio.

E sì, in azienda è tutto incentrato sull'integrazione di sistemi, in cui anche PHP non splende. Con abbastanza sforzo è possibile creare moduli C. C'è un bridge PHP-Java, che è piuttosto noioso da usare. Oltre a questo non hai molto. I tentativi di creare Boost :: PHP (integrazione con C ++) sono falliti. I cloni PHP in esecuzione su JVM non sono affatto compatibili al 100% con PHP (come nota a margine, non esiste una definizione formale del linguaggio PHP, l'unico riferimento è l'implementazione predefinita).

    
risposta data 16.03.2012 - 16:26
fonte
6

Non ho idea del motivo per cui le persone affermano che PHP è 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 siti web top100 nel mio paese. Utilizzano ancora PHP e non hanno in programma di cambiare nulla al riguardo.

La cosa, che potrebbe portare le persone a tale conclusione è che in caso di Java (e credo anche con .NET) la scalabilità delle applicazioni è un termine frequentemente introdotto 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 cluster tu stesso. Puoi farlo in molti modi, usando diversi componenti e devi sapere un po 'di più sui meccanismi interni di PHP. Questo probabilmente fa pensare alla gente, che con PHP single server (e quindi piccolo o medio sito web) è un vicolo cieco per PHP.

    
risposta data 16.03.2012 - 16:17
fonte
3

Non esiste una sola applicazione web aziendale. Nel mondo aziendale in genere si ha 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, la messaggistica delle code, l'integrazione aziendale, i gateway e molti altri. L'evento in alto potrebbe non essere solo

Anche se PHP fa bene al web non è buono per gli altri tipi di sistemi distribuiti. E poiché tu fai tutti questi sistemi in Java o in .NET, è facile anche creare lo stack web sulla stessa piattaforma piuttosto che in PHP.

    
risposta data 08.01.2015 - 09:37
fonte
1

Direi che i problemi con PHP derivano meno dalle prestazioni rispetto a una storia di vulnerabilità della sicurezza. Mentre è indubbiamente possibile scrivere un sito web di qualsiasi dimensione o complessità 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 sin dal primo giorno. Anche se non si adattano perfettamente alla distribuzione più recente (il pensiero originale riguardava principalmente applet, non servel), tale enfasi significa che le sue caratteristiche tendono ad adattarsi meglio alla produzione di codice sicuro. E, naturalmente, non si è fermato neanche - dato che le applet sono per la maggior parte un problema ormai morto, Java è stato ridefinito per enfatizzare il ruolo lato server che ora occupa (per lo più).

Poiché .NET almeno tenta di competere quasi direttamente con Java, fornisce molto lo stesso tipo di funzionalità e capacità a questo riguardo. Puoi discutere (e gli aderenti a entrambi i campi) se Sun o Microsoft fanno un lavoro migliore a questo proposito, ma il semplice fatto che entrambi hanno davvero bisogno di provare a lavorare su di esso dà loro un Un vantaggio abbastanza serio rispetto a PHP in questo senso.

    
risposta data 16.03.2012 - 14:34
fonte
0

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

Ora non l'abbiamo ancora visto, ma c'è sempre il tizio che ti dirà che FaceBook è scritto in PHP. Sbagliato. Era, in origine, fino a quando non si sono resi conto del loro errore, e ha scritto HipHop per trasformarlo in C ++.

EDIT: Apparentemente quell'ultimo blocco non è chiaro, quindi intendevo FaceBook IS scritto in PHP, ma HipHop lo rende RUN come C ++, per migliorare la velocità generale, PERCHÉ PHP è lento.

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

3) Tempo di sviluppo: la creazione di 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.

    
risposta data 16.03.2012 - 16:29
fonte

Leggi altre domande sui tag