lul*_*ezy 3 laravel laravel-queue
我希望我的laravel队列:在共享主机上继续运行的工作,这是共享主机(不是在VPS上),我什么都不能安装,因为在搜索此建议时几乎所有在线资源都建议安装主管。所以基本上我以为我可以创建一个cron作业,检查队列是否未运行并启动它,有关如何执行此操作的任何帮助,因为有点卡住了,谢谢。
Linux服务器和Laravel 5.3上的PS Am
sha*_*ari 17
Laravel >= 5.7
将此行添加到 app\Console\Kernel.php 中的调度程序中,然后设置 cron 作业来运行调度程序,可确保队列每分钟得到服务。
$schedule->command('queue:work --stop-when-empty')
->everyMinute()
->withoutOverlapping();
Run Code Online (Sandbox Code Playgroud)
对于 Cpanel 服务器,Cron 语句可能如下所示:
* * * * * /usr/local/bin/php /home/{account_name}/live/artisan schedule:run
Run Code Online (Sandbox Code Playgroud)
其中 {account_name} 是运行 cpanel 的用户帐户,live 是 laravel 应用程序的文件夹
来源:https ://talltips.novate.co.uk/laravel/using-queues-on-shared-hosting-with-laravel
Laravel <= 5.6
--once运行一项作业后强制退出
--tries一项作业可以尝试的最大次数
--timeout可以指定作业可以运行的最大秒数
withoutOverlapping()默认情况下,即使任务的前一个实例仍在运行,计划任务也会运行。为了防止这种情况,您可以使用 withoutOverlapping 方法
sendOutputTo()将输出发送到文件以供以后检查
$schedule->command('queue:work --timeout=60 --tries=1 --once')
->everyMinute()
->withoutOverlapping()
->sendOutputTo(storage_path() . '/logs/queue-jobs.log');
Run Code Online (Sandbox Code Playgroud)
Laravel 所有版本
如果您不想使用“--once”或“--max-time”选项,最好使用重新启动命令来避免内存泄漏并应用代码更改。
$schedule->command('queue:restart')
->everyFiveMinutes();
Run Code Online (Sandbox Code Playgroud)
Laravel <= 5.2
不建议:
--daemon 选项继续运行,如果您具有 ssh 或 cpanel“命令”访问权限,则可以从命令行运行一次。
如前所述,您正在使用共享主机,请按照以下步骤操作。
步骤1.
您需要将队列驱动程序设置为database
步骤2
您需要使用以下命令来设置cron作业
php /path/to/application/artisan queue:work --queue=high,default。
你可以试试看。我希望它能起作用。
最好的方法是在面板任务上设置以下命令(我正在使用 plesk 控制面板,它使我能够在那里设置任务)
php artisan queue:work --once
Run Code Online (Sandbox Code Playgroud)
注意:在我的共享主机中,由于其服务器配置,我必须设置以下值:
所以,结果会是这样的:
/opt/plesk/php/7.2/bin/php -q /var/www/vhosts/t4f.ir/httpdocs/artisan queue:work --once
Run Code Online (Sandbox Code Playgroud)
还有另一个运行时选项,我将其设置为 Cron 类型,值为:* * * * *这意味着,每分钟都会执行此代码。正如我在命令末尾使用 --once 一样,一旦执行命令并且作业完成,它将被终止。关于并发执行,我并不担心,因为它是在排队系统中处理的,并且是该系统的责任。
使用 Laravel 8,您可以选择--max-time让它queue:work在一段时间后停止作业处理。
php artisan queue:work --max-time=300
Run Code Online (Sandbox Code Playgroud)
您可以设置一个 cron 作业,例如每 5 分钟运行一次作业处理,并将选项设置--max-time为 5 分钟(300 秒)。在这种情况下,cron 将运行作业处理,300 秒后queue:work退出,几秒钟后,cron 将再次运行作业处理,依此类推。
| 归档时间: |
|
| 查看次数: |
4997 次 |
| 最近记录: |