2010-10-21 9 views
11

Penso che il titolo sia chiaro.Perché PHP ha una versione separata di ts (thread safe)/nts (non thread safe) mentre non supporta il multi-threading?

+18

Penso che sarebbe ancora educato esprimere correttamente il corpo della domanda. – deceze

+1

Ricordo di aver letto qualcosa simile a: 'IIS = NTS' e' Apache = TS'. – drudge

+1

@jnpcl Di solito è il contrario. Ma nel caso Apache dipende davvero dall'MPM di Apache in uso. Apache su Windows, per esempio, può usare solo i thread. –

risposta

21

Mentre non è possibile generare thread da codice PHP, è possibile utilizzare PHP con un server Web multi-thread che gestisce richieste simultanee su thread diversi. In questo caso dovrebbe essere utilizzata la versione TS (thread-safe) di PHP.

La versione TS di PHP mantiene lo stato di ogni richiesta nella propria posizione di memoria. Ciò è necessario perché tutte le richieste in un server multi-thread condividono lo stesso spazio di indirizzi.

L'alternativa è utilizzare un server multiprocesso (di solito prefork). Con un tale server alcuni stati possono essere mantenuti in variabili globali senza influenzare le richieste concorrenti. È così che viene implementata la versione NTS (non thread-safe) di PHP.

+2

Perché non usano solo thread-safe tutto il tempo? Non ha thread-safe ha qualche vantaggio? –