Решено, см. принятый ответ
Мы случайно получаем очень странные журналы ошибок. Они не происходят при каждом посещении страницы, даже с одинаковыми параметрами/действиями/и т. д., и они не кажутся повторяемыми, каждый из них отличается местом сбоя и контекстом. Но почти у всех причиной является неправильное __PHP_Incomplete_Class_Name.
Одна из таких ошибок:
main(): сценарий пытался выполнить метод или получить доступ к свойству неполного объекта. Убедитесь, что определение класса «LoginLogging» объекта, с которым вы пытаетесь работать, было загружено до вызова unserialize(), или предоставьте функцию __autoload() для загрузки определения класса
Проблема в том, что нет класса «LoginLogging». Объект, на который он ссылается, имел тип ScormElement, когда он был сохранен в сеансе.
Выполнение дампа переменной дает:
__PHP_Incomplete_Class::__set_state(array(
'__PHP_Incomplete_Class_Name' => 'LoginLogging',
'intUserId' => '64576',
'__intUserId' => '64576',
'intScormId' => '665',
'__intScormId' => '665',
'intScoId' => '9255',
'__intScoId' => '9255',
'strElement' => 'cmi.core.lesson_location',
'__strElement' => 'cmi.core.lesson_location',
'strValue' => '1',
'dttTimeModified' => QDateTime::__set_state(array(
'blnDateNull' => false,
'blnTimeNull' => false,
'strSerializedData' => '2011-08-31T08:05:22-0600',
'date' => '2011-08-31 08:05:22',
'timezone_type' => 1,
'timezone' => '-06:00',
)),
'__strVirtualAttributeArray' => array (),
'__blnRestored' => true,
'objUser' => NULL,
'objScorm' => NULL,
)
Все свойства сохраняются правильно и соответствуют определению класса ScormElement. Но имя класса неверное. не существует класса с именем LoginLogging.
Что является причиной этого и как это исправить???
Изменить: это всего лишь пример. Другие ошибки очень похожи по структуре, но затрагивают другие типы классов и имеют другие неполные имена. Однако ВСЕ неполные имена имеют одинаковую длину строки правильного имени класса.
Изменить 27 октября 2011 г.: я все еще вижу эти журналы ошибок и не смог найти решение. Будем признательны за любую помощь.
PHP 5.3.3, APC, обработчик сеанса по умолчанию.
Изменить 09.01.2026. Если это продолжает появляться в результатах поиска, это произошло из-за состояния гонки между APC и обработчиком сеанса. Я больше не использую PHP, поэтому не знаю, исправлено ли это, но обходной путь заключается в том, чтобы гарантировать, что сеанс будет записан до того, как APC удалит определения классов:
register_shutdown_function('session_write_close');
Подробнее здесь: https://stackoverflow.com/questions/727 ... name-wrong