加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

与PHP的Gearman – 在工作者的螺纹

发布时间:2020-12-13 17:07:55 所属栏目:PHP教程 来源:网络整理
导读:我有一个Gearman和 PHP工作者的问题. 我想同时运行相同的功能.但是现在Gearman似乎把它排成了队. 我正在搜索的输出是: $./daemon.php Starting daemon...Received job: H:www-dev1:15 Received job: H:www-dev1:16 FinishedFinished 但是当前代码的输出是:
我有一个Gearman和 PHP工作者的问题.
我想同时运行相同的功能.但是现在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()来分叉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";

工人:

#!/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”-script并将它们放在后台.或者(正如你自己提到的)创建分叉,但第一个更容易;)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读