php – Laravel运行多个计划任务

前端之家收集整理的这篇文章主要介绍了php – Laravel运行多个计划任务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前有一个计划的控制台命令,每5分钟运行一次,不会出现如下重叠:
$schedule->command('crawler')
             ->everyFiveMinutes()
             ->withoutOverlapping()
             ->sendOutputTo('../_laravel/storage/logs/scheduler-log.txt');

所以它的效果非常好,但是目前我有大约220页的时间需要3个小时的时间才能完成5分钟的增量,因为我迫使它每隔一段时间抓取10页,因为每个页面需要20-30秒才能爬行因素.每个页面都是数据库中的一个记录.如果我最终有10,000个网页要抓取,则此方法将无法正常工作,因为它需要超过24小时,每个页面应该每天重新爬行一次.

所以我的供应商允许多达10个并发请求(或更多的更高的计划),那么同时运行它的最佳方法是什么?如果我只是复制调度程序代码,它是否运行相同的命令两次或10次,如果我复制10次?任何会造成的问题

然后我需要传递参数到控制台,如1,2,3,等等,我可以使用它来确定要抓取哪些页面?即1个将是1-10个记录,2个将是11-20个记录,等等.

使用这个StackOverfow的答案,我想我知道如何传递它,像这样:

$schedule->command('crawler --sequence=1')

但是如何在我的Command类中读取该参数?它只是成为一个常规的PHP变量,即$序列?

>更好地使用队列进行作业处理
在cron上,添加所有作业到队列
>运行多个队列工作者,这将并行处理作业

提示:发生在我们身上.可能会发生以前添加的作业不完整,但是cron再次添加相同的任务.队列顺序运行.为了避免这种情况,您应该在上次完成任务时,在数据库标记中,以便您知道执行任务的时间(如果严重延误)

猜你在找的Laravel相关文章