Gearman, проблема расширения php: класс GearmanWorker не найден в .. с использованием терминала, но работает в браузере - PullRequest
11 голосов
/ 15 сентября 2011

Недавно я установил gearman на ubuntu 10.04 и установил его расширение pecl. Теперь, когда я запускаю php-файл в браузере, который содержит:

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

Я получаю object(GearmanWorker)#1 (0) { }

но при запуске реального рабочего файла в терминале (по корню) я получаю это:

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;
}

Пожалуйста, помогите!

Ответы [ 3 ]

14 голосов
/ 15 сентября 2011

Введите php --ini в командной строке, чтобы увидеть, какой php.ini использует ваш PHP CLI. Убедитесь, что Gearman включен в этом php.ini.

3 голосов
/ 14 октября 2016

с использованием locate php.ini В моем ноутбуке Ubuntu показывают 2 результата:

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

добавить оба extension=gearman.so в файл 2 php.ini затем перезапустите php и gearmand, работающий сейчас.

2 голосов
/ 02 июня 2015
  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 в конце.

...