gpt4 book ai didi

php - Gearman:还有没有办法从后台工作人员那里检索自定义数据?

转载 作者:行者123 更新时间:2023-12-04 05:38:22 25 4
gpt4 key购买 nike

首先,我知道 this题:

  • Gearman: Sending data from a background worker to the client

  • 我想知道的是,Gearman 还是这样吗?我计划将一批图像 URL 从 PHP Web 应用程序发送到 gearman 工作器(也是用 PHP 编写的;我们称之为“主工作器”)以进行异步处理。然后,此工作人员将为每个图像提交一个单独的任务(通过 addTask()),调用 runTasks() 并等待任务完成,同时监听异常、累积错误消息并更新整体作业状态。

    虽然我完全可以使用 jobStatus() 调用从 Main Worker 检索整体状态,但只是说在返回 [false, false, 0, 0] 时处理了所有图像,我绝对需要能够通知用户某些图像无法从其各自的 URL 检索或存储在服务器上。

    我想我总是可以将自定义数据存储在内存缓存中,然后从网络应用程序中检索它,但对我来说它似乎“更脏”......

    我不是想得到任何结果,因为从我在 php.net 的手册中看到的内容来看,即使是异常处理也只能在任务同步提交时完成,更不用说自定义数据检索了。我只是希望可能有我遗漏的东西。
    我没记错,我们使用的是带有 libgearman6 (v 0.27) 和 PHP 5.3.10 的 Ubuntu Server 12.04。 gearman 扩展的版本是 1.0.2。我认为数据库在这里无关紧要,因为我不会在任何一个工作人员中使用它。我认为我们现在没有使用持久队列。

    最佳答案

    由于 gearman 不会在任务完成后将任何任务信息保存在内存中(只需将其报告给同步任务),如果不将其存储在第 3 方位置,您将无法在 Web 应用程序中检索它。为此,我们通常在应用程序中使用一个简单的 Web 服务,让工作线程在任务完成或发生错误时回调应用程序。这允许我们保留有关在它所属的应用程序中发生此类错误时我们想要做什么的业务逻辑,并使我们的工作人员更加通用(我们可能需要在许多应用程序中调整图像大小,但有些应用程序可能需要启动几个依赖于首先完成的图像大小调整的子任务)。

    在编写时,您也可以让工作人员直接将任务状态写入数据库或写入 memcached,但我发现让应用程序本身处理逻辑而不必更改,并且在特殊情况下工作人员工作得更好.它也非常适合工作框架,让您在实际工作代码中保持相同的标准化处理回调方式。

    关于php - Gearman:还有没有办法从后台工作人员那里检索自定义数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11615941/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com