【发布时间】:2010-05-11 17:50:07
【问题描述】:
我有一个有 200 行的表。我每 10 分钟运行一次 cron 作业以对表执行某种插入/更新操作。每次运行 cron 作业时,一次只需要对 5 行执行该操作。所以在前 10 分钟更新记录 1-5,在第 20 分钟更新记录 5-10,依此类推。
当 cron 作业第 20 次运行时,表中的所有记录将恰好更新一次。这是至少要达到的。下一个 cron 作业应该再次重复该过程。
问题:
也就是说,每次运行 cron 作业时,都应该在 N 行(不仅仅是 5 行)上执行插入/更新操作。因此,如果 N 为 100,则所有记录将仅由 2 个 cron 作业更新。下一个 cron 作业将再次重复该过程。
这是一个例子:
这是我目前拥有的表(200 条记录)。每次执行 cron 作业时,它都需要选择 N 记录(我在 PHP 中将其设置为变量)并使用当前时间的 MD5 值更新 time_md5 字段。
+---------+-------------------------------------+
| id | time_md5 |
+---------+-------------------------------------+
| 10 | 971324428e62dd6832a2778582559977 |
| 72 | 1bd58291594543a8cc239d99843a846c |
| 3 | 9300278bc5f114a290f6ed917ee93736 |
| 40 | 915bf1c5a1f13404add6612ec452e644 |
| 599 | 799671e31d5350ff405c8016a38c74eb |
| 56 | 56302bb119f1d03db3c9093caf98c735 |
| 798 | 47889aa559636b5512436776afd6ba56 |
| 8 | 85fdc72d3b51f0b8b356eceac710df14 |
| .. | ....... |
| .. | ....... |
| .. | ....... |
| .. | ....... |
| 340 | 9217eab5adcc47b365b2e00bbdcc011a | <-- 200th record
+---------+-------------------------------------+
因此,第一条记录(id 10)不应该更新一次以上,直到所有 200 条记录都更新一次 - 一旦所有记录都更新一次,该过程应该重新开始。
我对如何实现这一点有一些想法,但我确信有更有效的方法可以做到这一点。
有什么建议吗?
【问题讨论】:
-
你的更新机制是cron执行的PHP脚本吗?
-
是的,它是一个 PHP 脚本 + mySQL。