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再次添加相同的任务.队列顺序运行.为了避免这种情况,您应该在上次完成任务时,在数据库标记中,以便您知道执行任务的时间(如果严重延误) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |