我想知道重新排队一个laravel工作是否是一个坏主意。我有一个场景,一旦用户将Facebook帐户集成到我的应用程序中,我就需要从Facebook上拉出用户的帖子。我想提取{x}天历史数据。Facebook api 像任何其他 api 一样,每分钟有 api 请求的限制。我跟踪请求标头,一旦达到速率限制,我就将这些信息保存在数据库中,对于每个重新排队,我检查我是否有资格调用Facebook api
这是代码片段,用于更好的可视化
<?php
namespace App\Jobs;
class FacebookData implements ShouldQueue
{
/**
* The number of seconds the job can run before timing out.
*
* @var int
*/
public $timeout = 120;
public $userid;
public function __construct($id)
{
$this->userid=$id;
}
public function handle()
{
if($fbhelper->canPullData())
{
$res=$fbhelper->getData($user->id);
if($res['code']==429)
{
$fbhelper->storeRetryAfter($res);
self::dispatch($user->id);
}
}
}
}
上面的片段是一个粗略的想法。这是个好主意吗?我发布这个问题的原因是看起来像一个递归,它会尝试直到返回true.这可能需要6分钟.我担心在我的应用程序中会发生任何影响。提前致谢self::dispatch($user->id);$fbhelper->canPullData()
开满天机