我有一个永远运行的Yii2脚本,可以根据请求执行任务。
某些任务(如task2
)应该在单独的分叉过程中执行:
switch ($command) {
case 'task1':
echo "hello";
break;
case 'task2':
if ( ($pid=pcntl_fork()) == -1 )
throw new Exception("fork failed");
if ($pid==0) {
// we are child process
// perform task here
...
exit(0);
}
break;
}
}
执行这样的fork,数据库连接在父级中丢失。有一些workarounds on the PHP level,但如何在Yii2级别处理这个问题?
我们可以通过配置在Yii2中激活自动重新连接吗?