Risposte:
Le domande sono un po 'strane, non è chiaro se stai chiedendo solo PHP o se la tua domanda è più generale.
Ti darò una breve panoramica dal lato PHP.
Innanzitutto, i due protocolli:
Gli script CGI sono un modo per eseguire uno script lato server quando arriva una richiesta HTTP; questo non ha nulla a che fare con PHP
FastCGI è un "CGI migliore" - CGI è noto per essere lento, Fast CGI è un approccio diverso con risultati molto più veloci; questo non ha nulla a che fare con PHP.
Ora le cose relative a PHP:
mod_php esegue un PHP come modulo Apache - ovvero la richiesta PHP viene eseguita nel processo Apache con tutto ciò che ne consegue - I processi Apache sono definiti dalla configurazione di Apache, PHP viene eseguito con l'autorizzazione Apache ecc.
PHP-FPM è l'implementazione FastCGI di PHP; PHP-FPM funziona come un server FastCGI autonomo e Apache si collega al server usando il modulo di Apache, generalmente mod_fcgid o mod_fastcgi; Personalmente penso che questo sia molto meglio che funzionare come mod_php, ma dipende dalle tue esigenze ed è anche un po 'più complesso; in questa configurazione, permessi, cose relative ai processi e tutto viene eseguito sotto configurazione PHP, utente PHP ecc. & Apache si connette a PHP come a un server; in questa configurazione è anche possibile avere un pool di server PHP e avere un server PHP su una macchina fisicamente diversa da Apache. Dicono che è veloce quasi quanto l'uso del modulo Apache e ci sono vantaggi di un migliore controllo sulla configurazione di PHP.
SuPHP - questo era principalmente usato per affrontare alcuni problemi di mod_php relativi alle autorizzazioni; con mod_php gli script PHP vengono eseguiti sotto l'utente / gruppo Apache; mod_suphp può eseguire gli script in diversi utenti; Non l'ho mai usato, PHP-FPM ora dovrebbe essere una scelta molto migliore
Quindi in poche parole: