gearman doBackground () не работает с php

Я работаю в своей локальной системе с 64-разрядной версией ubuntu 12.04, PHP 5.3.10, gearman 1.1.5. следующий код

print gearman_version() . "\n";

выдает предупреждение php

Предупреждение PHP: модуль gearman уже загружен в Unknown в строке 0

Также я создал консольное приложение yii WorkerAdminCommand.php, используя

<?php
class WorkerAdminCommand extends CConsoleCommand {

public function run() {

    $gmworker = new GearmanWorker();
    $gmworker->addServer(); // also tried with $gmworker->addServer('127.0.0.1:4730');
    $gmworker->addFunction("getMyFunc", array($this, "getMyFunc"));
    print "Waiting for job...\n";
    while ($gmworker->work()) {
        if ($gmworker->returnCode() != GEARMAN_SUCCESS) {
            echo "return_code: " . $gmworker->returnCode() . "\n";
            break;
        }
    }
}

public function getMyFunc($job) {
     echo "start \n";
  // long task 
     echo "\n end \n";
}

} ?>

И AdminCommand.php

<?php

class AdminCommand extends CConsoleCommand {

public function run($args) {
    $gmclient = new GearmanClient();
    $gmclient->addServer();

    echo "Sending job\n";
    $data =  $args[0];
    $result = $gmclient->doBackground("getMyFunc", $data);

    # Check for various return packets and errors.
    switch ($gmclient->returnCode()) {
        case GEARMAN_WORK_STATUS:
        list($numerator, $denominator) = $gmclient->doStatus();
        echo "Status: $numerator/$denominator complete\n";
        break;
        case GEARMAN_WORK_FAIL:
        echo "Failed\n";
        exit;
        case GEARMAN_SUCCESS:
        echo "Job process successfully\n";
        break;
        default:
        echo "RET: " . $gmclient->returnCode() . "\n";
        exit;

    }
    echo $result . PHP_EOL;
}

}

?>

запустить рабочий php job_entry.php workeradmin Ожидание задания ... запустить клиент php job_entry.php admin arg1 это дает мне ошибку

Ошибка PHP [2]: GearmanClient :: doBackground (): send_packet (GEARMAN_COULD_NOT_CONNECT) Не удалось отправить пакет параметров сервера -> libgearman / connection.cc: 430


person Sandip Pingle    schedule 05.09.2013    source источник


Ответы (2)


ты можешь попробовать это

 $gmworker->addServer('127.0.0.1','4730');
person Mohsen    schedule 05.09.2013
comment
каково решение PHP Warning: Module 'gearman' already loaded in Unknown on line 0 этой ошибки. - person Sandip Pingle; 05.09.2013

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

person Kalpit    schedule 06.09.2013