php – Laravel运行多个计划任务

php – Laravel运行多个计划任务,第1张

概述我目前有一个计划的控制台命令,每5分钟运行一次,不会出现如下重叠: $schedule->command('crawler') ->everyFiveMinutes() ->withoutOverlapping() ->sendOutputTo('../_laravel/storage/logs/scheduler-lo 我目前有一个计划的控制台命令,每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再次添加相同的任务.队列顺序运行.为了避免这种情况,您应该在上次完成任务时,在数据库标记中,以便您知道执行任务的时间(如果严重延误)

总结

以上是内存溢出为你收集整理的php – Laravel运行多个计划任务全部内容,希望文章能够帮你解决php – Laravel运行多个计划任务所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1253847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存