我正在使用 yii2 和队列模块。我将命令放入队列中,在我编写的控制台中yii queue/listen
。脚本的工作每次在 5 分钟后崩溃,并显示以下消息:
[-][-][-][error][yii\queue\Queue] [2890] <путь до job-а> (attempt: 1, PID: 9345) is finished with error: Symfony\Component\Process\Exception\ProcessTimedOutException: The process "'yii' 'queue/exec' '2890' '300' '1' '9345' '--color='" exceeded the timeout of 300 seconds.
我把它放在函数最开始的工作代码中execute
:
set_time_limit(1800);
ini_set('MAX_EXECUTION_TIME', '-1');
不起作用。显然是因为该进程是在控制台中启动的,但这在控制台中不起作用。
我更改了ttr
配置中的设置queue
:
'queue' => [
'class' => \yii\queue\db\Queue::class,
'db' => 'db', // компонент подключения к БД
'tableName' => 'queue', // Имя таблицы
'channel' => 'default', // Queue channel key
'mutex' => \yii\mutex\MysqlMutex::class, // Mutex used to sync queries
'ttr' => 60 * 60,
'as log' => \yii\queue\LogBehavior::class,
'on afterError' => function($event) {}
],
即ttr
- 60 * 60 - 1 小时。但错误说大约 300 秒。这 300 秒从何而来,如何改变?
我预见到“php.ini 中的价值是什么?”这个问题。- 答:在php.ini中max_execution_time的值一般等于30!