微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 cronJobs

如何解决如何使用 cronJobs

如果有人帮助我解决这个问题,我非常感谢。

详细信息:我有一个 MysqL 表,其中存储了 110000 多条记录,并带有唯一的应用程序(列)编号。 现在有了 Detail API,它将在 URI 参数中一次只获取 1 个申请编号,并返回该申请编号的详细信息,目前大约需要 1 分钟才能做出响应。

现在我需要使用 Cron 作业调度更新该记录(多列)以始终更新数据库中的记录。 并且会逐步更新。

流程:从数据库获取申请编号 -> 调用详细 API -> 更新数据库上的记录。

问题:数据库中有大量记录,我们无法为所有应用程序编号调用API。

我使用 Laravel 7 和 Guzzle HTTP 客户端 7.2 HTTP Client 进行 API 调用

欢迎提出任何建议!

更新: (已测试)我正在考虑做这样的事情,并同意@bhucho 的评论,每 15 分钟调用一次 cron

我们为 last_updated_id 认 1 在表中再创建一列 我们将编写一个查询获取应用程序编号,例如使用 Laravel 的 take 方法一个 Slab 中获取 100 或 500 条记录Database Queries

$latestIdInColumn = myTableClassRef::max(last_updated_id);

$applications = myTableClassRef::select('application_number)->where('id','>',$latestIdInColumn)
->take(100)
->get()->toArray();

这里我们为每个应用程序编号调用detail API和update,当最后一次应用程序更新完成时,我们将把该id存储在last_updated_id中。

再次调用 cron 时,我们有 last_updated_id,因此我们将在下一个查询中应用相同的过滤器,其中 id '>' $latestIdInColumn。现在我们将获得下 100/500 条记录,其中 id 大于 $latestIdInColumn。

if ( $applications  )
{
  For all other available id
} else {
  when record not found.
  Here we will reset the last_updated_id = 1
}

现在函数将从 id 1 中获取

  • 它还没有经过测试,我只是打算这样做,我很高兴 对此的反馈。

注意:现在 API 不需要 1 分钟来响应我解决了这个问题。

更新 2:运行良好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。