php - Zend Server Job 前身失败依赖

标签 php

我使用 Zend Server Jobs 并设置最大并发作业数 = 4,需要此设置 - 许多高优先级作业需要尽快处理。

我还有低优先级的作业,执行时间长 5-7 分钟 - 繁重的数据库操作 - 我希望这个作业一次运行一个 - 如果并行运行会竞争数据库资源和超时。我有创建它们的循环(大约 30 个工作),我正在使用 getJobsList() 检查队列中是否存在具有适当名称的工作,获取最大的工作 ID 并设置为下一个工作的前身。然而,即使作业已经创建(第二次迭代)也不会被 getJobsList() 拾取,并且后续迭代不会拾取最大/最新的作业 ID...

在创建工作时是否涉及延迟? createHttpJob() 和以下 getJobsList() 不返回最近创建的...

在设置了前置任务并且前置任务失败后——比如超时——它会自动让依赖失败。

这是一种设置前任只完成而不管状态的方法吗 - 只是不在队列中或已经在运行?

最佳答案

我正在尝试找出你的问题,这让我遇到了一个问题,我在一段时间前解决了这个问题,我在这里分享我的问题/解决方案,这样你就可以从你的问题中找到一些出路,假设你能够通过它的一些提示更好地解决您的问题。

我有一个相当简单的问题,我有一个必须发布的消息表(以便它们的状态从待处理更新为已发送或错误)。现在运行单个 JOB 并执行所有这些发送会产生问题,因此我必须生成多个实例,这是我通过 crontab 完成的,每 5 秒启动一次(为此我必须编写 sleep 逻辑,因为 cron 默认情况下仅每分钟启动一次)。现在,每个作业都计划以 5 秒的间隔开始,并具有特定的 JOB-WORKER-ID,该 ID 作为参数手动分配给脚本,因为我想要每个作业的 ID,所以同时没有重复的 JOB-WORKER-身份有效。

为此,我保留了一个像 JOB_LOG 这样的表,它记录所有作业并存储它的开始时间、结束时间和每个作业执行期间发送的消息数。现在每次我开始新的工作时,我都会检查是否有相同的 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。 :-)

表格的表格结构类似于以下内容:

job_log
 - job_log_id
 - start_time
 - end_time
 - message_sent_count
 - job_worker_id

我知道我的回答并不能完全解决你的问题,但我看到有一些相似之处,你可以从中找到一些线索。

祝你好运。

关于php - Zend Server Job 前身失败依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638596/

相关文章:

php - 从 views_php 过滤器返回 TRUE 未按预期工作

php - 如何像mysql一样对数组进行排序

php - SQL/PHP 如何使用 LEFT JOIN 对其进行过滤?

javascript - 将JS变量传递给PHP以执行SQL查询

PHP socket_bind() : unable to bind address [10013]

php - Gzip 还是 ob_flush()?哪个更好?

Curl - 不适用于 Windows CLI

javascript - Laravel动态表单输入文本并上传文件

php - 我如何连接 7 个表,其中一列(存在于所有表中)等于所有表中的相同内容?

php - 表单规范数据与 View 数据——有什么区别?