To nie jest PHP, ale serwer WWW, który obsługuje żądania. PHP nie działa samodzielnie. Jeśli strona zawiera kod PHP, takie żądanie jest delegowane do PHP przez odpowiedni moduł PHP SAPI. Istnieją wielowątkowe, wieloprocesowe serwery WWW i można nawet wyobrazić sobie pojedynczy serwer WWW, więc jest to zależne wyłącznie od serwera WWW, jeśli zostanie utworzony osobny wątek lub proces dla żądania.
W wielu miejscach dokumentacji PHP można spotkać linie jak ten na umask()
:
Należy unikać stosowania tej funkcji w serwerach wielowątkowych. Lepiej jest zmienić uprawnienia do pliku przy pomocy polecenia chmod() po utworzeniu pliku. Użycie funkcji umask() może prowadzić do nieoczekiwanego zachowania się skryptów i samego serwera WWW, ponieważ wszystkie one używają tego samego umask.
... jak długo wątek pozostaje żywy? Czy ten wątek poprawnie utrzymuje wszystkie zmienne statyczne? (jak połączenie DB)
Brzmisz jak jeden z C++. Prawdopodobnie masz na myśli zmienne globalne w PHP. PHP ma wbudowaną obsługę połączeń z bazami danych i nie powinieneś się o to martwić. Są to szczegóły implementacji. Większość SAPI zapewnia stałe połączenia z bazą danych, ale to tylko dla twojej ciekawości. Stałe połączenia są tworzone po jednym dla każdego procesu, który obsługuje żądania. Tak więc w tym przypadku są one utrzymywane raczej przez proces niż wątek.
Kiedy ten wątek zostanie zniszczony, wywołuje wszystkie destruktory?
W PHP destruktory są wywoływane po zakończeniu wykonywania skryptu. Z punktu widzenia programisty PHP nie ma znaczenia, gdzie znajduje się skrypt.
Zobacz także [to pytanie] (http://stackoverflow.com/questions/14183397/php-request-lifecycle) (nie jest to dokładnie duplikat do zamknięcia) –
Pytasz o 'mod_php' lub' php' ? – kojiro