Я начинаю с объектов в PHP, и мне было интересно, когда они удаляются. Это когда файл PHP заканчивает загрузку или когда он заканчивается функцией, которую я вызываю? в любом случае, чтобы сохранить объект в живых, поэтому его можно вызвать в другом экземпляре, когда файл загружен.Когда объекты PHP умирают?
ответ
Между объектами умирает и объекты не входят в сферу применения.
Если вы заинтересованы в логистике управления памятью и сборкой мусора в PHP, то как T.J. Кроудер указал, что вы можете прочитать the manual on garbage collection in PHP.
Если, с другой стороны, вас больше интересует область переменных, тогда ответ заключается в том, что область переменных обычно ограничена блоком, в котором они объявлены. Но вы также можете создавать глобальные переменные и обращаться к ним с помощью global
ключевое слово внутри функций - хотя глобальные переменные обычно плохая идея. См. the manual.
И что касается сохраняющихся переменных за сценарием, это может быть достигнуто только через какой-то механизм хранения. В контексте веб-приложений, которые обычно выполняются с использованием session state, но будьте осторожны, чтобы нюансы сохраняющихся объектов от одного сеанса до следующего (то есть одного вызова сценария к следующему) могут отличаться в зависимости от того, сохраняется ли состояние сеанса в процессе или вне процесса. В случае, если это последний, объекты будут сериализованы и десериализованы, что делает вещи немного более сложными.
PHP память вары является сбором мусора, как правило, они удаляются (уменьшение рефа), когда запрос заканчивается, функция из области видимости .. и т.д. вы можете пойти с одноплодной шаблон, и загружать только не загруженные объекты к сведению, что это работает только для каждого отдельного запроса, если вы хотите сохранить объект в памяти более одного запрос, что это не будет работать на PHP,
/**
* Singleton class
*
*/
final class UserFactory
{
/**
* Call this method to get singleton
*
* @return UserFactory
*/
public static function Instance()
{
static $inst = null;
if ($inst === null) {
$inst = new UserFactory();
}
return $inst;
}
/**
* Private ctor so nobody else can instance it
*
*/
private function __construct()
{
}
}
Применения: пример
$fact = UserFactory::Instance();
$fact2 = UserFactory::Instance();
$fact == $fact2;
кода взят из https://stackoverflow.com/a/203359/1291995
Ссылка на подсчет '! =' Сбор мусора. Для большинства целей объект PHP разрушается и освобождается из памяти *, как только счетчик ссылок достигает нуля *. Отдельный «сборщик мусора» только ногами в циклических ссылок, которые никогда не могут достичь счетчик ссылок равен нулю. – IMSoP
1. Я не сказал количество ссылок == gc. 2. Это то, что я сказал, выпущен, когда ref переходит в 0. Я не вижу, каково ваше возражение здесь – Omiga
Ваш ответ начинается с фразы «PHP vars - сбор мусора». Я думаю, что подсчет ссылок является одной из форм сбора мусора в некотором смысле, но они обычно не используются взаимозаменяемо, особенно потому, что PHP имеет как для разных целей. – IMSoP
- 1. java GC, когда все объекты умирают молодым
- 2. Почему мои объекты не умирают?
- 3. Когда переменные public-члена умирают?
- 4. Управление случаем, когда сервлеты умирают
- 5. В python, когда потоки умирают?
- 6. Что происходит, когда умирают() вызывается в функции
- 7. NetLogo: n-ошибка, когда все черепахи умирают
- 8. Почему ключевые привязки умирают?
- 9. Nodejs никогда не умирают?
- 10. Когда нажим объекты в массив в PHP, все объекты же
- 11. Нити AsyncTask никогда не умирают
- 12. Тонкие процессы умирают без сообщения
- 13. perl: Нити не умирают, когда основной процесс умирает
- 14. Как запускать другие процессы, которые умирают, когда родитель делает?
- 15. Как работают гортины, и они умирают, когда заканчивается главный процесс?
- 16. Старые ссылки никогда не умирают
- 17. Нитки NSOperationQueue просто не умирают
- 18. PHPSESSID cookies не удаляются/умирают
- 19. Сбой PHP/Apache, когда PHP вызывает COM-объекты
- 20. методы как объекты - Как/когда
- 21. Подписчики событий WPF PRISM не умирают
- 22. угловые службы умирают перед вызовом контроллера
- 23. Сообщения GCM умирают безмолвной смерть «Принято».
- 24. Redis + ActionController :: Живые потоки не умирают
- 25. Почему сокеты не умирают, когда сервер умирает? Почему сокет умирает, когда сервер жив?
- 26. Как отредактировать потоки, если они умирают
- 27. Фибоначчиевые кролики умирают после произвольных # месяцев
- 28. Когда Cocos2d сохраняет объекты?
- 29. Когда объекты пакета инициализируются?
- 30. Когда построены одноэлементные объекты?
Нет ничего похожего на [чтение руководства] (http://php.net/manual/en/features.gc.php), который также является лучшим хитом для «Сборки мусора PHP» на A Famous Поисковый движок. :-) –
Ваш второй вопрос (* «есть в любом случае, чтобы сохранить объект живым, чтобы его можно было вызвать в другом экземпляре, когда файл загружен» *) действительно сильно отличается от вашего первого. Если второй вопрос является вашей * реальной * целью, я рекомендую переформулировать, чтобы сделать это основной фокус. –
Где идут объекты PHP, когда они умирают? Они не едут на небеса, где летают ангелы, Перейти к огненному огню и обжариванию, Смотрите их снова 'до 4 июля – AbraCadaver