11

我最近在 ubuntu 10.04 上安装了 gearman,并安装了它的 pecl 扩展。现在,当我在浏览器中运行包含以下内容的 php 文件时:

$client = new GearmanWorker();
die(var_Dump($client));

我明白了object(GearmanWorker)#1 (0) { }

但是当在终端(通过root)运行一个真正的工作文件时,我得到了这个:

sudo php worker.php
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imagick.ini on line 1 in Unknown on line 0
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
PHP Warning:  Module 'pcntl' already loaded in Unknown on line 0
PHP Fatal error:  Class 'GearmanWorker' not found in /home/ME/public_html/try/worker.php on line 3

工人代码:

#!/usr/bin/php 
<?php $worker= new GearmanWorker();
$worker->addServer('127.0.0.1');
$worker->addFunction("reverse", "reverse_fn");
while (1) {
    print "Waiting for job...\n";
    $ret = $worker->work();
    if ($worker->returnCode() != GEARMAN_SUCCESS)
        break;
}
function reverse_fn ($job)
{
    $workload = $job->workload();
    echo "Received
 job: " . $job->handle() . "\n";
    echo "Workload: $workload\n";
    $result = strrev($workload);
    for ($i = 1; $i <= 10; $i ++) {
        $job->status($i, 10);
        sleep(1);
    }
    echo "Result: $result\n";
    return $result;
}

请帮忙!

4

3 回答 3

14

在命令提示符处键入php --ini以查看您的 PHP CLI 使用的 php.ini。确保在那个 php.ini 中启用了 Gearman。

于 2011-09-15T08:57:12.000 回答
3

在我的 ubuntu 笔记本电脑中使用locate php.ini 显示 2 个结果:

/etc/php5/apache2/php.ini
/etc/php5/cli/php.ini

将两者都添加extension=gearman.so到 2 php.ini 文件中,然后重新启动 php 和 gearmand 现在工作。

于 2016-10-14T15:45:30.833 回答
2
  1. 安装 gearman 作业服务器和 libgearman

    apt-get install gearman-job-server libgearman-dev

  2. 安装 pecl 扩展

    apt-get install php-pear php5-dev pecl install gearman

  3. 打开正确的 php.ini 文件并extension=gearman.so在最后添加。

于 2015-06-01T22:44:39.127 回答