Вот уже несколько дней бьюсь с задачей по распараллеливанию расчетов системы.
В качестве multithreading-инструмента решил использовать расширение pthreads.
И, в результате работы столкнулся с такой проблемой, что при попытке обращения к любому объекту, классу или полю из треда вылезает ошибка такого типа:
Код: Выделить всё
Fatal error: Class 'CException' not found in C:\OpenServer\domains\local.dev\common\lib\Yii\base\CComponent.php on line 130
Fatal error: Class 'CException' not found in C:\OpenServer\domains\local.dev\common\lib\Yii\base\CComponent.php on line 130
Fatal error: Class 'CException' not found in C:\OpenServer\domains\local.dev\common\lib\Yii\base\CComponent.php on line 130
Fatal error: Class 'CException' not found in C:\OpenServer\domains\local.dev\common\lib\Yii\base\CComponent.php on line 130
Fatal error: Class 'CException' not found in C:\OpenServer\domains\local.dev\common\lib\Yii\base\CComponent.php on line 130
Fatal error: Class 'CException' not found in C:\OpenServer\domains\local.dev\common\lib\Yii\base\CComponent.php on line 130
Fatal error: Class 'CException' not found in C:\OpenServer\domains\local.dev\common\lib\Yii\base\CComponent.php on line 130
Fatal error: Class 'CException' not found in C:\OpenServer\domains\local.dev\common\lib\Yii\base\CComponent.php on line 130
PHP Error [8]
Trying to get property of non-object (C:\OpenServer\domains\local.dev\common\lib\Yii\db\ar\CActiveRecord.php:658)
Код: Выделить всё
Fatal error: Cannot access property Yii::$_aliases in C:\OpenServer\domains\local.dev\common\lib\Yii\YiiBase.php on line 388
Fatal error: Cannot access property Yii::$_aliases in C:\OpenServer\domains\local.dev\common\lib\Yii\YiiBase.php on line 388
Fatal error: Cannot access property Yii::$_aliases in C:\OpenServer\domains\local.dev\common\lib\Yii\YiiBase.php on line 388
Fatal error: Cannot access property Yii::$_aliases in C:\OpenServer\domains\local.dev\common\lib\Yii\YiiBase.php on line 388
Fatal error: Cannot access property Yii::$_aliases in C:\OpenServer\domains\local.dev\common\lib\Yii\YiiBase.php on line 388
Fatal error: Cannot access property Yii::$_aliases in C:\OpenServer\domains\local.dev\common\lib\Yii\YiiBase.php on line 388
Fatal error: Cannot access property Yii::$_aliases in C:\OpenServer\domains\local.dev\common\lib\Yii\YiiBase.php on line 388
Fatal error: Cannot access property Yii::$_aliases in C:\OpenServer\domains\local.dev\common\lib\Yii\YiiBase.php on line 388
PHP Error [8]
Trying to get property of non-object (C:\OpenServer\domains\local.dev\common\lib\Yii\db\ar\CActiveRecord.php:658)
Но тогда возникает логичный вопрос: как "научить" треды всему содержимому проекта?
То, что пробовал:
- засылать в тред clone Yii::app();
- создавать Yii-приложение внутри треда;
- отправлять само приложение, как переменную в класс;
- просто пытаться стучаться к объектам Yii;
Если кто сталкивался и решал подобные проблемы, поделитесь, пожалуйста, опытом.
Заранее спасибо за ответы.
P.S. Работоспособность pthreads я проверил отдельно, действительно, библиотека работает. Потоки создаются и считают что нужно.