PHP MySQL 和队列、表锁定、读写器问题

标签 php mysql cron

我有以下场景:

PHP(Server, Writer) ----> MySQL Database <------ PHP(Client, Reader/ Writer);
  • PHPS = PHP 服务器
  • PHPC = PHP 客户端

它是如何工作的?

  1. PHPS 将数据写入临时数据库表 (queue_*)。
  2. PHPC 由 1 小时的 cron 触发。
  3. PHPC 启动,连接到数据库并在本地缓存所有记录(如何?不知道,本地 mysql 数据库?sqlite?)
  4. PHPC 逐一执行这些记录中定义的任务
    • 如果任务成功,则会将其从数据库中删除
    • 如果不成功,它会将该记录添加到数据库中的报告表下。

我如何实现这个

  • 没有从 PHPS 写入一半的记录到达 PHPC。
  • PHPC 可以在一次查询处理后将所有记录缓存在本地。

我们非常感谢您可能拥有并分享的任何其他想法。

最佳答案

MySQL 的默认锁定将确保不会获取“半写入”的行。就“本地缓存”而言,在您的场景中,这似乎意味着将它们从数据库中读取到本地 PHP 数据结构(如数组)中。

关于PHP MySQL 和队列、表锁定、读写器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3796665/

相关文章:

php - 在 PHP 应用程序中正确使用 markdown

python - 将复杂的 json 对象插入到 sql 模式中

php - 基于三个数据库表的查询总是返回零结果

javascript - request.get 不在 node-cron 的回调中工作

mysql - Cron 作业制作日期数据库条目

php - 同时运行多个 cron 作业时如何克服服务器负载问题?

javascript - 获取存储在文件中的Javascript对象,并将其放入php变量中

php - 无法在 Phpstorm 中为 composer 添加命令行工具支持

带有变量的 Php mysql select 语句(无效参数编号 : number of bound variables does not match number of tokens)

python - 由于缺少编译器错误,带有 python 和 alpine 的 Docker 镜像失败