我有以下场景:
PHP(Server, Writer) ----> MySQL Database <------ PHP(Client, Reader/ Writer);
- PHPS = PHP 服务器
- PHPC = PHP 客户端
它是如何工作的?
- PHPS 将数据写入临时数据库表 (queue_*)。
- PHPC 由 1 小时的 cron 触发。
- PHPC 启动,连接到数据库并在本地缓存所有记录(如何?不知道,本地 mysql 数据库?sqlite?)
- PHPC 逐一执行这些记录中定义的任务
- 如果任务成功,则会将其从数据库中删除
- 如果不成功,它会将该记录添加到数据库中的报告表下。
我如何实现这个
- 没有从 PHPS 写入一半的记录到达 PHPC。
- PHPC 可以在一次查询处理后将所有记录缓存在本地。
我们非常感谢您可能拥有并分享的任何其他想法。
最佳答案
MySQL 的默认锁定将确保不会获取“半写入”的行。就“本地缓存”而言,在您的场景中,这似乎意味着将它们从数据库中读取到本地 PHP 数据结构(如数组)中。
关于PHP MySQL 和队列、表锁定、读写器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3796665/