小编fer*_*and的帖子

laravel 6 无法为作业队列设置延迟代码

我需要帮助来正确运行作业的延迟代码。我使用 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 秒。正确的延迟代码是什么?

请帮忙。在我的例子中,正确的延迟代码是什么?

php cron redis laravel

2
推荐指数
1
解决办法
5091
查看次数

标签 统计

cron ×1

laravel ×1

php ×1

redis ×1