Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Лучше делать $a = null; если хотите ускорить освобождение.А ещё лучше вызвать gc_collect_cycles()
как только число ссылок = 0
Fatal error: Exception thrown without a stack frame in Unknown on line 0
unset($a);
unset($b);
print "GC: " .gc_collect_cycles(). "\n";
$a->f = NULL;
$b->f = NULL;
unset($a);
unset($b);
Деструктор будет вызван при освобождении всех ссылок на определенный объект или при завершении скрипта (порядок выполнения деструкторов не гарантируется).
<?php
class Basic {
function _park() {
$this->__destruct();
foreach($this as $key=>$value) {
$this->$key = NULL;
}
}
function __destruct() {
echo('.');
}
}
class FOO extends Basic {
public $f;
}
class BAR extends Basic {
public $f;
}
gc_disable();
while(1) {
$a = new FOO();
$b = new BAR();
$a->f = $b;
$b->f = $a;
print "Memory usage: " . number_format(memory_get_usage(true)) . " bytes\n";
$a->_park(); unset($a);
$b->_park(); unset($b);
}
Лучше делать $a = null; если хотите ускорить освобождение.
<?php
$a = 12;
echo ' -- ';
$a = null;
if($a) echo '111';
unset($a);
if($a) echo '222';
$a = 5;
$b = &$a;
unset($b);
print $a;
$a = 5;
$b = &$a;
$b = null;
print $a;
$a = array('test' => 1);
$a['test'] = NULL;
echo "Key test ", array_key_exists('test', $a)? "exists": "does not exist";
$a = array('test' => 1);
unset($a['test']);
echo "Key test ", array_key_exists('test', $a)? "exists": "does not exist";
но как вы хотите интерпретировать ответ
наверняка, на вашем хостинге за 5 долларов в месяц нет доступа по SSH, утилиты cron или похожего инструмента.
У нас тут в РФ хостинг за 3 доллара с cron и это не самые низкие цены.Да, даже в 7 раз дешевле — и то cron есть

наверняка, на вашем хостинге за 5 долларов в месяц нет доступа по SSH, утилиты cron или похожего инструмента
Но псевдослучайность на выборке из n-сотен нельзя сопоставлять с тысячами запросов в минуту. Задачи, которые должны запускаться через определенное время, на деле обрабатываются несколько раз в мгновение ока. Начинают происходить забавные вещи...
Система должна самостоятельно уметь восстанавливаться после смерти в любой произвольный момент времени [...]
$app = new Apllication();
$app->processRequest($_REQUEST);
где все инициализации, парсинг конфигов, установления соединений с БД и кэш-серверами и т. п., происходят в конструкторе для каждого запроса. Или аналогично в процедурной форме. Была бы простая и юзабельная возможность из коробки писать демоны с логикой вида$app = new Application();
while($app->processRequest($app->getRequest()) { }
Проблема, которой вы пугаете в этой статье, актуальна для всех интерпретируемых языков.

Каждое утро думай о том, как надо умирать. Каждый вечер освежай свой ум мыслями о смерти. И пусть так будет всегда. Воспитывай свой разум. Когда твоя мысль постоянно будет вращаться около смерти, твой жизненный путь будет прям и прост.
PHP создан, чтобы умирать