Код операции (APC/XCache), Зенд, Доктрина и Автопогрузчики

Необходимо смочь загрузиться от Живого CD и зафиксировать ситуацию. Если надлежащие драйверы набега не находятся на Живом CD, который является хорошо, можно установить их после начальной загрузки. Это установит временно на памяти и останется, пока Вы не перезагрузите.

то, Что я лично сделал бы, вернулось все, что я хотел сохранить и запустить чистую установку. Затем можно восстановить данные из резервного копирования. Вы могли бы освободить некоторые настройки тот путь, но если Вы создаете резервную копию своей целой пользовательской папки, можно восстановить файлы настроек по мере необходимости позже.

7
задан Pascal MARTIN 1 September 2009 в 21:49
поделиться

4 ответа

Вы можете поместить « Zend_Session :: writeClose (true); » в конец вашего index.php.
Это переведет сеанс в постоянное состояние до того, как необходимые объекты (Zend_Loader и т. Д.) Будут уничтожены.

Лучше : зарегистрируйте его как функцию выключения .
Таким образом, он будет выполнен, даже если вы используете exit () , die () или возникнет фатальная ошибка :

register_shutdown_function(array('Zend_Session', 'writeClose'), true);
10
ответ дан 6 December 2019 в 19:40
поделиться

Есть ли что-то еще, искажающее путь включения? Возможно, попробуйте выйти из пути include прямо перед этой строкой в ​​вашем первом примере APC.

Путь XCache действительно странный. Однако этот проект довольно мертв, и я бы не стал доверять ему на PHP 5.2+. Вместо этого попробовать eaccelerator? Нам очень повезло с этим.

0
ответ дан 6 December 2019 в 19:40
поделиться

Возможно, это похоже на проблему с пользовательской обработкой сессий и APC-cache. Если вы назначили пользовательский обработчик сессий, он регистрируется в RSHUTDOWN в PHP. Это та же процедура, которую использует APC, и поэтому в PHP возникает внутренний конфликт, и ваш пользовательский обработчик сессий не будет закрываться во всех ситуациях.

Поэтому вам придется убедиться, что вы вручную закрываете пользовательский обработчик сессии при выключении

Размещение "Zend_Session::writeClose(true);" в конце вашего index.php - не лучший способ сделать это, если у вас есть какие-либо вызовы exit; в ваших скриптах.

Лучше зарегистрировать обработчик выключения таким образом:

function shutdown()
{
 Zend_Session::writeClose(true);
}

register_shutdown_function('shutdown');

Поместите это в начало файла index.php, чтобы убедиться, что процедура выключения зарегистрирована до запуска любых других скриптов.

3
ответ дан 6 December 2019 в 19:40
поделиться

Бенджамин Кремер, ты спасатель. Хотя указанная выше (исходная) проблема является частным случаем автозагрузки с помощью сеансов, закрытие сеанса кажется общим решением для таких случаев. Однако примечание:

Размещение Zend_Session :: writeClose (true); в конце ваших скриптов не всегда может сократить его, поскольку у вас могут быть exit; , die (); и т. Д. В вашем коде. В этом случае вы можете использовать

register_shutdown_function (array ('Zend_Session', 'writeClose'), true);

или просто

register_shutdown_function ('session_write_close');

, если вы не используете Zend для сессий.

0
ответ дан 6 December 2019 в 19:40
поделиться
Другие вопросы по тегам:

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