我目前有一个计划的控制台命令,每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变量,即$序列?