прерывистый «Попытка присвоить свойство не-объекта» по запросам / неспособность установить свойства объекта через $ this

Я получаю довольно странную прерывистую ошибку в webapp, над которым я работаю, это только срабатывает после определенных обстоятельств. После того, как выполняется особенно длинная страница обработки (выполняется, извлекает и сортирует 100000+ записей), каждая загрузка страницы с момента неудачи с несколькими ошибками, такими как следующие для любого из используемых одноэлементных объектов:

Предупреждение PHP: попытка присвоить свойство не объекта в E: \ tracking \ lib \ Controller \ ControllerChainManager.class.php в строке 33

Соответствующий раздел кода выглядит следующим образом: (Строка 33 отмечена стрелкой).

class ControllerManager { private static $Instance; private $CurrentController = 0; private $ControllerArray; private $ControllerArrayIndex = 0; /** * Constructor * @return null; */ private function __construct() { $this->ControllerArray = array(); <-- LINE 33 return; } /** * Singleton instance function * @return ControllerManager; */ public static function Inst() { if (!isset(self::$Instance)) { $c = __CLASS__; self::$Instance = new $c; } return self::$Instance; } //*** snip the rest of the class definition *** 

Теперь этот файл включен в каждый запрос, но после того, как был сделан неправильный запрос, эти ошибки будут продолжаться (в конечном итоге приводя к фатальным ошибкам в строке) до перезапуска сервера Apache. Если один и тот же запрос выполняется с использованием меньшего набора данных, ошибка не возникает, и система работает как обычно.

Кажется, что ничто не кажется актуальным для поиска в тексте ошибки, и тот факт, что проблема терпит неудачу только на экземплярах singleton-pattern, может быть ключом , но я не могу для жизни меня понять, что происходит.

Сервер – это PHP 5.3.

Кто-нибудь видел такую ​​ошибку раньше? Меня это несколько забивает.

Изменить: дополнительное траление через журналы теперь показывает другой класс, показывающий эту ошибку, но на этот раз это не синглтон.

 class ControllerChainData { public $Action; public $Controller; public $Vars; public function __construct($controller,$action,$vars = null) { $this->Controller = $controller; //<-- 10 $this->Action = $action; //<-- 11 $this->Vars = $vars; //<-- 12 } } 

В результате чего…

  • PHP Предупреждение: попытка присвоить свойство не-объекта в E: \ tracking \ lib \ Controller \ ControllerChainManager.class.php в строке 10

  • PHP Предупреждение: попытка присвоить свойство не-объекта в E: \ tracking \ lib \ Controller \ ControllerChainManager.class.php в строке 11

  • PHP Предупреждение: попытка присвоить свойство не-объекта в E: \ tracking \ lib \ Controller \ ControllerChainManager.class.php в строке 12

когда создается объект класса ControllerChainData.

Изменить 2: В ответ на комментарий ниже, CCD вызывается из следующего метода класса ControllerChainManager:

 public function RegisterControllerIntoChain ($controller, $action, $vars = null) { $contpath = 'controllers/' . $controller . '/' . $controller . '.cont.php'; if (file_exists($contpath)) { include_once($contpath); $this->ControllerArray[$this->ControllerArrayIndex++] = new ControllerChainData($controller,$action,$vars); return true; } return false; } 

Редактировать 3: Похоже, что предыдущая статья postOverflow соответствует / может быть такой же ошибкой:

Неинтерминированная ошибка ссылки на объект в PHP 5.3.X

Изменить 3a:

В этом отчете об ошибке описывается моя точная проблема: http://bugs.php.net/bug.php?id=50027 (найденный из предыдущей публикации SO) Я собираюсь обновить PHP на сервере как можно скорее, Если вы решите проблему, опубликуйте информацию.

Related of "прерывистый «Попытка присвоить свойство не-объекта» по запросам / неспособность установить свойства объекта через $ this"

почему бы вам просто не сделать его private $ControllerArray = array(); и пропустите метод __construct ()

Отсортировано: Как упоминалось в изменениях 3 и 3a, обновление версии PHP решило проблему. Спасибо за помощь, всем.