【发布时间】:2015-08-30 00:28:43
【问题描述】:
我有每 3 分钟运行一次脚本的 crons,脚本包含什么功能:
try
begin transaction
loop
//parse large xml data
//send data to database
endloop
commit
endtry
catch
rollback
endcatch
现在,数据插入是一个漫长的过程,大约需要3-6分钟,而cron是每3分钟,所以有时会出现进程冲突。 我看到当我在循环中添加优先级具有新进程的提交时,我可以说嘿新事务等到事务提交之前吗?
【问题讨论】:
-
如果你无法锁定一个琐碎/专用的哨兵表,称之为 MyISAM 或 ROW (INNODB),然后退出。但是不要害怕,你可以在3分钟后重试:>
-
是的,标记一个 cron 正在以某种方式运行,然后每次启动它都会检查它是否应该运行或只是退出。你可以简单地在磁盘上创建一个文件,或者在数据库表上设置一个列等等,你可以做很多事情来实现这一点。你甚至可以使用MUTEX
-
聪明的想法@RiggsFolly,有没有办法检查一些交易是否活跃?
-
你使用的是什么操作系统
-
是web linux服务器