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

时间:2010-09-26 05:13:33

标签: 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 db?sqlite?)
  4. PHPC逐个执行这些记录中定义的任务
    • 如果任务成功,则将其从数据库中删除
    • 如果不成功,则会在报告表格下的数据库中添加该记录。
  5. 我如何实现这个

    • PHPS没有一半的书面记录送到PHPC。
    • PHPC可以在一次查询后在本地缓存所有记录以进行处理。

    您可能拥有和分享的任何其他想法都受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

MySQL的默认锁定将确保不提取“半写”行。就“本地缓存”而言,在您的场景中,所有这些意味着将它们从数据库中读取到像数组一样的本地PHP数据结构中。

答案 1 :(得分:1)

你可以在这里看到MySQL锁定:Locking in MySQL。记住完成写入数据后记住解锁表。