gpt4 book ai didi

php - 与 Gearman 并行化

转载 作者:行者123 更新时间:2023-12-03 22:53:22 24 4
gpt4 key购买 nike

我想并行化一个已经由 Gearman 和 PHP 处理的处理作业。我不明白多次调用 doBackground() 的区别:

$gmclient->doBackground("reverse", "Hello!");
$gmclient->doBackground("reverse", "Hello!");
$gmclient->doBackground("reverse", "Hello!");

我有足够的注册 worker ,在他们自己的 PID 上运行。所以这 3 个作业由 3 个不同的 worker 并行运行。

或者使用 addTask(),如文档中所述,明确用于并行化。

$gmc->addTask("reverse", "Hello World!", null, "1");
$gmc->addTask("reverse", "!dlroW olleH", null, "2");
$gmc->addTask("reverse", "!dlroW olleH", null, "3");

$gmc->runTasks()

谢谢你的帮助

最佳答案

区别在于 runTasks() 将阻塞,直到所有通过 addTask() 添加的任务完成。当所有三个任务都完成时,您的最后一个示例将完成(添加一个 sleep() 调用以在实践中查看它),而第一个示例只会将任务移交给 gearmand 然后继续运行脚本。

使用 addTask() 将独立的任务(但可能相关)分组,可以轻松地执行一组任务,然后再执行假设所有先前任务都已完成的操作。一个例子可能是调整 4 种不同分辨率的图像,然后在所有四个任务完成后将图像设置为事件图像。使用 runTasks() 这很容易通过四个 addTask() 调用实现,一个 runTasks() 然后更改图像的状态,同时使用 doBackground,您必须轮询已提交给 gearmand 的任务的状态,以了解它们何时完成。

关于php - 与 Gearman 并行化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10397923/

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