Php 如何有效地执行这个cron作业?

Php 如何有效地执行这个cron作业?,php,cron,Php,Cron,我有一张200行的桌子。我每10分钟运行一次cron作业,对表执行某种插入/更新操作。每次运行cron作业时,每次只需对5行执行该操作。所以在前10分钟,记录1-5被更新,记录5-10在第20分钟被更新,依此类推 当cron作业运行第20次时,表中的所有记录都会被更新一次。这是至少要实现的目标。下一个cron作业应该再次重复这个过程 问题: 也就是说,每次运行cron作业时,应该对N行(而不仅仅是5行)执行插入/更新操作。因此,如果N为100,则所有记录将仅由2个cron作业更新。下一个cron

我有一张200行的桌子。我每10分钟运行一次cron作业,对表执行某种插入/更新操作。每次运行cron作业时,每次只需对5行执行该操作。所以在前10分钟,记录1-5被更新,记录5-10在第20分钟被更新,依此类推

当cron作业运行第20次时,表中的所有记录都会被更新一次。这是至少要实现的目标。下一个cron作业应该再次重复这个过程

问题: 也就是说,每次运行cron作业时,应该对
N
行(而不仅仅是5行)执行插入/更新操作。因此,如果
N
为100,则所有记录将仅由2个cron作业更新。下一个cron作业将再次重复该过程

下面是一个例子:

这是我目前拥有的表(200条记录)。每次执行cron作业时,它都需要选择
N
记录(我在PHP中将其设置为变量),并用当前时间的md5值更新
time\u 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 |时间| md5 |
+---------+-------------------------------------+ 
|10 | 971324428e62dd6832a2778582559977 |
|72 | 1bd58291594543a8cc239d99843a846c |
|3 | 9300278bc5f114a290f6ed917ee93736 |
|40 | 915bf1c5a1f13404add6612ec452e644 |
|599 | 799671e31d5350ff405c8016a38c74eb |
|56 | 56302bb119f1d03db3c9093caf98c735 |
|798 | 47889AA559636636B5512436776AFD6BA56 |
|8 | 85FDC72D3B51F0B8B356 ECEAC710DF14 |
|      .. | .......                             |     
|      .. | .......                             |     
|      .. | .......                             |     
|      .. | .......                             |     

|340 | 9217eab5adcc47b365b2e00bbdcc011a |您可以使用红色/黑色系统(如用于集群管理)


基本上,所有行都以黑色开头。运行cron时,它会将更新的行标记为“红色”。一旦所有的行都是红色,您就可以切换,现在开始将所有的红色行变为黑色。您可以保持这种交替,它应该允许您有效地标记行,这样您就不会两次更新它们。(您可以将任何颜色目标存储在文件或其他文件中,以便在cron之间共享)

我只需使用cron每隔10/5分钟运行一次PHP脚本,然后使用PHP的time和date函数执行其余逻辑。如果无法计时,可以将位置标记变量存储在一个小文件中。

您的更新机制是由cron执行的PHP脚本吗?是,这是一个PHP脚本+mySQL。我几乎不想在没有任何额外文件的情况下执行此操作,因为可能会有几十个相同的PHP脚本在运行-每个cron作业中只有变量N会更改。是否希望多个脚本同时修改同一数据集?不,每个cron作业都会更新一定范围内的记录。在我的实际表中,每个cron将处理任何特定年份的记录。因此,将有5个cron分别处理2000年、01年、02年、03年、04年和05年的记录。啊,我想你可以将红色/黑色标记存储在另一个表中,以避免写入任何文件?我已经解决了某种红色/黑色系统。