gpt4 book ai didi

php - 带有 PHP 的 Gearman - worker 中的线程

转载 作者:可可西里 更新时间:2023-10-31 23:10:14 24 4
gpt4 key购买 nike

我对 Gearman 和 PHP 的 worker 有疑问。我想同时运行相同的功能。但是现在 Gearman 似乎把它变成了一个队列。

我正在搜索的输出是:

$ ./daemon.php  
Starting daemon...
Received job: H:www-dev1:15
Received job: H:www-dev1:16
Finished
Finished

但是当前代码的输出是:

$ ./daemon.php  
Starting daemon...
Received job: H:www-dev1:15
Finished
Received job: H:www-dev1:16
Finished

是否可以使用 pcntl_fork() 来 fork GearmanWorker?

客户:

$client = new GearmanClient();
$client->addServer();

$args = array('test' => 'test1');
$args = serialize($args);

$client->doBackground('test', $args);
sleep(1);
$client->doBackground('test', $args);

echo "Done";

worker :

#!/usr/bin/php
<?php

echo "Starting daemon..." . PHP_EOL;

$worker = new GearmanWorker();
$worker->addServer();
$worker->addFunction('test', 'testFunc');

while ($worker->work()) {
}

function testFunc($job) {

echo "Received job: " . $job->handle() . PHP_EOL;
sleep(10);
echo "Finished" . PHP_EOL;
}

最佳答案

一名 worker 一次可以处理一项工作。如果你需要执行多个工作,你当然需要创建多个 worker。在您的情况下,只需多次执行“Worker”脚本并将它们置于后台。或者(正如您自己提到的)创建 fork ,但第一个显然更容易;)

关于php - 带有 PHP 的 Gearman - worker 中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6520388/

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