Cosa succede esattamente su una macchina LAMP quando richiedo un file php?

3

Sono uno sviluppatore .NET che ha recentemente iniziato a lavorare in un ambiente LAMP. So che se vado a www.somedomain.com/files/test.php , quindi (1) DNS risolve l'URL al mio server (2) il mio server gestisce la richiesta su una determinata porta (3) il server guarda in /files/test.php e in qualche modo gira test.php e restituisce l'output del file al client.

Ma sarebbe davvero bello capire questo processo in modo molto più dettagliato. Ad esempio, Apache / nginx esegue effettivamente il file php o lo passa all'interprete php? Ogni file php viene eseguito ogni volta o il server esegue la cache dell'output? Sarebbe davvero utile conoscere i principali dettagli / decisioni che un ambiente LAMP fa durante questo processo. Un po 'come questa risposta, che spiega in dettaglio come funziona SSL ...

link

    
posta Bernie2436 21.12.2013 - 14:24
fonte

2 risposte

5

Ciò che accade esattamente dipende molto dalle esigenze e dalla configurazione della singola applicazione o server.

For instance, does Apache/nginx actually run the php file or does it pass it to the php interpreter?

Entrambi sono possibili, ma per motivi di prestazioni, l'interprete PHP è tipicamente integrato nel server come modulo (come mod_php per Apache e php-fpm per nginx). Inoltre, il codice PHP in genere non viene interpretato, ma compilato in bytecode e archiviato in una cache come APC, quindi viene eseguito solo il bytecode.

Does every php file run every time or does the server cache its output?

Questo è molto specifico per l'applicazione. I siti Web ad alto traffico devono utilizzare strategie di caching aggressive e, laddove possibile, memorizzano nella cache pagine HTML completamente renderizzate tramite un proxy inverso configurazione, quindi il server LAMP stesso non sarà nemmeno coinvolto nella maggior parte delle richieste.

Nell'ambiente LAMP, è anche comune usare memcached per memorizzare in cache frammenti HTML parzialmente resi o risultati di query SQL; in genere ciò richiede la sintonizzazione manuale nel codice o la configurazione (se supportata tramite qualche framework).

    
risposta data 21.12.2013 - 14:51
fonte
0

Per capire che cosa sta succedendo, è meglio consultare l' Common Gateway Inteface . Per ragioni di efficienza quasi nessuno lo usa più, ma i sostituti moderni (mod_php, fastcgi) sono stati progettati per essere retrocompatibili con esso.

Fondamentalmente, il web server riceve una richiesta http, capisce cercando l'URL che deve eseguire uno script php per soddisfarlo, quindi esegue l'interprete php su quello script con un gruppo di variabili d'ambiente impostate con le informazioni della query . L'output dell'interprete php viene rinviato al client http.

    
risposta data 22.12.2013 - 17:04
fonte

Leggi altre domande sui tag