Он вызывается при выполнении первого из следующих условий:
- Счетчик ссылок объекта обнуляется (это обычно происходит, когда у объекта больше нет переменных, ссылающихся на него - они были не установлены или вышли из области видимости), но это может произойти позже, так как объект может быть ссылка на что-то отличное от переменной - на самом деле счетчик ссылок - это просто число, которым можно манипулировать произвольным образом).
- При использовании PHP 5.3, когда сборщик мусора обнаруживает положительный счетчик ссылок из-за циклических ссылок.
- В противном случае, когда скрипт завершится чисто.
Короче говоря, вы не должны полагаться на то, что он всегда вызывается, потому что скрипт может не завершиться чисто.