首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何有效地执行这个任务?

如何有效地执行这个任务?
EN

Stack Overflow用户
提问于 2010-05-11 17:50:07
回答 2查看 534关注 0票数 1

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

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

问题:是,每次运行cron作业时,都应该对N行(而不仅仅是5行)执行insert/update操作。所以,如果N是100,那么所有的记录都会被2个cron作业更新。下一个cron任务将再次重复这个过程。

下面是一个例子:

这是我目前拥有的表格(200条记录)。每次执行cron作业时,它都需要选择N记录(我在PHP中将其设置为变量),并使用当前时间的MD5值更新time_md5字段。

代码语言:javascript
复制
+---------+-------------------------------------+ 
|      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条记录都更新一次--进程应该在所有记录都更新一次之后重新开始。

我对如何实现这一点有一些想法,但我相信有更有效的方法来实现这一点。

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-11 17:56:19

您可以使用红色/黑色系统(如用于群集管理)。

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

票数 2
EN

Stack Overflow用户

发布于 2010-05-11 17:59:19

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2813104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档