使用cron作业处理大型数据库以进行远程API连接

时间:2016-08-31 05:20:20

标签: php laravel laravel-5 cron cron-task

我是Laravel的新手并且正在建立一个小型的练习项目。

有一张注册表格,每天最多可完成100次注册。

它返回状态 - >等待用户。

现在我的问题是,根据我的知识,连接远程Api的php执行时间是30秒。

然后,如果我需要调用远程api来接收每个用户状态的数据,如果它被接受"那么,如何处理cron作业?或"拒绝"或者仍然在等待"

我正在努力应对这种情况和我的数据库结构,如

userId - status - created_at - updated_at

如果可能的话,我需要在所有用户20小时后拨打电话,如果我们不能立即拨打电话,则需要每4小时拨打一次。

最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

对于长期运行的任务,我想到了两个选项:

任务队列

使用异步task queue。它们专为长时间运行的任务而设计。为每个新注册的用户安排一个工作。确保将超时设置为超过估计的30秒。将用户实例传递给作业的构造函数并将其存储到实例变量中。在处理程序中,只需直接更新记录。

回调

通过http实现回调。这需要控制远程api。在调用远程api时,您将提交一个回调网址,例如https://local-app.domain/callbacks/finished-check-user/223,其中223是用户的ID。远程api将在完成处理后向给定URL发送http请求。在本地应用程序中,让控制器处理请求,通过其id获取用户,并使用从请求正文中的远程api接收的数据更新它。别忘了确保请求是真实的。

这有帮助吗?