我需要帮助来正确运行作业的延迟代码。我使用 laravel 6,现在我正在抓取 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));
}
}
Run Code Online (Sandbox Code Playgroud)
我试过这个代码。但仍然无法为每个循环添加延迟 30 秒
其他人认为我sleep(30);在作业文件中添加了延迟代码。这是我在工作 app/Jobs/GetYoutubeLink.php 中所做的
public function handle()
{
sleep(30);
// Scraping youtube total number of views code
}
Run Code Online (Sandbox Code Playgroud)
但这也一样。每个循环不会延迟 30 秒。正确的延迟代码是什么?
请帮忙。在我的例子中,正确的延迟代码是什么?