我需要帮助来更正运行作业的延迟代码。。我使用的是Laravel6,现在我正在抓取youtube的浏览量。
假设我有一个充满youtube链接的表。当我在youtube上做剪贴的时候。我们需要在转到其他链接之前添加延迟时间。如果我们不拖延的话。youtube将阻止我们的访问。我想为每个循环增加30秒的延迟。
所以我已经在app/console/commands/getyoutube.php文件中列出了
use App\Models\Youtube;
use App\Jobs\GetYoutubeView;
use Carbon\Carbon;
...
public function handle()
{
$youtubes = Youtube::get();
foreach ($youtubes as $youtube) {
GetYoutubeView::dispatch($youtube->link)->delay(Carbon::now()->addSeconds(30));
}
}
我试过这个密码。但仍然不能为每个循环增加30秒的延迟
其他人认为我添加了延迟代码 sleep(30);
在作业文件中。以下是我在jobs app/jobs/getyoutubelink.php中所做的工作
public function handle()
{
sleep(30);
// Scraping youtube total number of views code
}
但这是一样的。每个循环不会延迟30秒。正确的延迟代码是什么。
请帮忙。什么是正确的延迟代码在我的情况下。
1条答案
按热度按时间cngwdvgl1#
当您调用dispatch时,作业将被调度。在那之后你再打给延期。您应该创建作业并在分派之前延迟作业。
编辑
如果您以前调用多个日期,您应该只创建一个日期,并不断增加30秒。