Проблема такая, при указании кол-ва воркеров больше 1, возникают проблемы с базой данных, воркер падает с эксепшеном:
Я может быть не правильно понимаю, но получается, под каждый воркер нужен свой экземпляр базы? Как можно решить эту проблему?[PDOException] SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
Код: Выделить всё
<?php
namespace app\commands;
use app\models\user\User;
use yii\console\Controller;
use Workerman\Worker;
use Workerman\Timer;
class WorkerController extends Controller
{
...
public function initWorker()
{
$port = 3000;
$wsWoker = new Worker("websocket://127.0.0.1:$port");
//4 processes
$wsWoker->count = 1;
$self = $this;
$wsWoker->onWorkerStart = function ($worker) use ($self) {
...
Timer::add(10, function () use ($self) {
$users = array_keys($self->_users);
if (!empty($users)) {
$model = User::find()->where(['in', 'id', $users])->all();
...
}
});
};
...
$wsWoker->onMessage = function ($connection, $data) {
$this->onMessage($connection, $data);
...
$model = User::findOne($id);
};
}
private function start($daemon = false)
{
$this->initWorker();
global $argv;
$argv[0] = $argv[1];
$argv[1] = 'start';
if ($this->daemon) {
$argv[2] = '-d';
}
Worker::runAll();
}
}