微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Zend Server Job的前身失败依赖

我使用Zend Server Jobs设置max concurrent jobs = 4,需要这个设置 – 许多需要尽快服务的高优先级作业.

此外,我有低优先级的作业,长时间执行5-7分钟 – 繁重的数据库操作 – 我希望此作业一次运行 – 如果并行运行竞争数据库资源和超时.我有创建它们的循环(大约30个作业),我正在检查具有正确名称的作业是否存在于队列中使用getJobsList(),拾取最大作业ID并设置为下一个作业的前任.但是,即使作业已经创建(第二次迭代)也没有被getJobsList()选中,并且以下迭代没有获得最大/最新的作业ID …

在创造就业机会期间是否涉及延迟? createHttpJob()和以下getJobsList()最近没有返回创建的…

在设置了前驱并且前驱失败后 – 如超时 – 它会自动失败依赖.

它是一种设置前驱只是为了完成而不管状态 – 只是不在队列中或已经在运行?

解决方法:

我正在试图找出你的问题,这需要我解决一个问题,我修复了一段时间,我在这里分享我的问题/解决方案,以便你可以从你的问题中找到一些出路,假设你将能够更好地解决你的问题有一些提示.

我有一个相当简单的问题,我有一个消息表,我必须发布(以便他们的状态从Pending to Sent或Error更新).现在让单个JOB运行并完成所有这些发送创建的问题,因此我必须生成多个实例,我通过crontab生成,每5秒启动一次(为此我必须编写睡眠逻辑,因为认情况下cron认每分钟启动).现在每个作业都安排以5秒的间隔开始并具有特定的JOB-WORKER-ID,该ID作为脚本的参数手动分配,因为我想要每个作业的ID,所以同时没有重复的JOB-WORKER- ID有效.

为此,我保留了一个像JOB_LOG这样的表,它记录所有作业并存储它的start_time,end_time和每个作业执行期间发送的消息数.现在每次我开始新的JOB时,我都会检查同一个JOB-WORKER-ID是否正在运行?通过触发查询到JOB_LOG表.

SELECT end_time FROM JOB_LOG WHERE job_worker_id = <N> ORDER BY JOB_LOG_ID DESC

如果未指定end_time,则表示JOB仍在运行,否则启动新JOB是安全的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐