使用远程 API 连接的 cron 作业处理大型数据库
Handling large database with a cron job for a remote API connection
我是 Laravel 的新手,正在构建一个小项目进行练习。
只有一张注册表,每天最多可完成 100 个注册。
它 return 我的状态-> 待处理的用户。
现在我的问题是,据我所知,php 与远程 Api 连接的执行时间是 30 秒。
那么,如果变成"accepted"或[=30=,我需要调用远程api来接收每个用户状态的数据,我该如何处理cron作业] 或仍在 "pending"
我正在为这种情况和我的数据库结构而苦苦挣扎
userId - 状态 - created_at - updated_at
如果可能的话,我需要在 20 小时后为所有用户调用它,或者如果我们不能立即调用它们,则每 4 小时调用一次。
最佳做法是什么?
对于长运行的任务,我想到了两个选项:
任务队列
使用异步task queue。它们专为长时间 运行 任务而设计。为每个新注册的用户安排一项工作。请务必将超时设置得比您估计的 30 秒长。将用户实例传递给作业的构造函数并将其存储到实例变量中。在处理程序中,直接更新记录。
回调
通过http实现回调。这需要控制遥控器api。当调用远程 api 时,您将提交一个回调 url,例如 https://local-app.domain/callbacks/finished-check-user/223
其中 223 是用户的 ID。远程 api 将在完成处理后向给定的 url 发送一个 http 请求。在您的本地应用程序中,让控制器处理请求,通过用户 ID 获取用户,并使用从请求正文中的远程 api 接收到的数据更新它。不要忘记确保请求是真实的。
这有帮助吗?
我是 Laravel 的新手,正在构建一个小项目进行练习。
只有一张注册表,每天最多可完成 100 个注册。
它 return 我的状态-> 待处理的用户。
现在我的问题是,据我所知,php 与远程 Api 连接的执行时间是 30 秒。
那么,如果变成"accepted"或[=30=,我需要调用远程api来接收每个用户状态的数据,我该如何处理cron作业] 或仍在 "pending"
我正在为这种情况和我的数据库结构而苦苦挣扎
userId - 状态 - created_at - updated_at
如果可能的话,我需要在 20 小时后为所有用户调用它,或者如果我们不能立即调用它们,则每 4 小时调用一次。
最佳做法是什么?
对于长运行的任务,我想到了两个选项:
任务队列
使用异步task queue。它们专为长时间 运行 任务而设计。为每个新注册的用户安排一项工作。请务必将超时设置得比您估计的 30 秒长。将用户实例传递给作业的构造函数并将其存储到实例变量中。在处理程序中,直接更新记录。
回调
通过http实现回调。这需要控制遥控器api。当调用远程 api 时,您将提交一个回调 url,例如 https://local-app.domain/callbacks/finished-check-user/223
其中 223 是用户的 ID。远程 api 将在完成处理后向给定的 url 发送一个 http 请求。在您的本地应用程序中,让控制器处理请求,通过用户 ID 获取用户,并使用从请求正文中的远程 api 接收到的数据更新它。不要忘记确保请求是真实的。
这有帮助吗?