我有一个用户表,我需要不断上传,所以一旦更新,我想直接重新启动命令。
实际上,我使用的是一个 cron,它在 Laravel 中每分钟启动一次 ($schedule->command('update:users')->everyMinute();
),但我如果工作快于一分钟,我会浪费一些时间,如果超过一分钟,我的服务器就会过载。
我在想也许可以使用一个队列,一旦脚本终止,就重新启动它自己,就像这样:
// Do My stuff
Queue::push(new UpdateUsers($));
但如果脚本崩溃,它不会自行重新加载,我需要至少启动一次。我知道我可以使用 pcntl_fork 函数,但我想使用 Laravel 的交 key 函数。我该怎么办?
最佳答案
我建议运行 CLI 命令, 在命令中放置一个
while (true)
循环所以它会永远运行。创建此脚本后,您可以使用 supervisord 运行它
此服务运行您告诉他的命令,失败时会自动重新启动。请注意,在 X 次失败后它将停止,这取决于您如何配置它。
配置文件示例:
/etc/supervisord/conf.d/my_infinite_script.conf
内容可能是:
[program:laravel_queue]
command=php artisan your_command:here
directory=/path/to/laravel
autostart=true
autorestart=true
stderr_logfile=/var/log/your_command.err.log
stdout_logfile=/var/log/your_command.out.log
关于带有 Laravel 的 PHP 无限脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35135187/