@Romo4ka_eto_ia
Просто человек

Когда выполняется __destruct?

Здравствуйте. функция __destruct в классе выполняется до отправки данных пользователю, или после?
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
Может до, может после

Данные серверу (пользователю) можно отправить через fast_cgi_finish_request, но приложение продолжит работать — очевидно объекты продолжат существовать столько, сколько нужно и удалены (если пришёл gc, а на объект никто не ссылается)

Кроме того у вас может быть демон, который вообще не работает с веб-сервером… очевидно что объекты будут существовать без связи с клиентом

В общем случае (классич работа приложения) после того как закончится выполнение — fpm прибьёт ваш процесс и объекты соотвественно — и будет вызван деструктор

Вы можете и сами инициализировать деструктор через удаленние объекта через unset

В режиме, когда пхп-скрипт работает достаточно долго (или в cli режиме или после finish request) — gc может прийти за брошенными объектами сам и вызвать деструкторы

Почитать:

https://abhishekjakhotiya.medium.com/php-fpm-shutd...

https://www.php.net/manual/ru/features.gc.performa...
https://developpaper.com/garbage-collection-mechan...

gc = garbage collector = сборщик мусора
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы