3

ubuntu 12.04 64ビット、PHP 5.3.10、ギアマン1.1.5を使用してローカルシステムで実行しています。次のコード

print gearman_version() . "\n";

PHP警告をスローします

PHP 警告: モジュール 'gearman' は行 0 の Unknown に既にロードされています

また、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;
}

}

?>

run worker php job_entry.php workeradmin ジョブを待っています... run client php job_entry.php admin arg1 これによりエラーが発生します

PHP エラー [2]: GearmanClient::doBackground(): send_packet(GEARMAN_COULD_NOT_CONNECT) サーバー オプション パケットの送信に失敗しました -> libgearman/connection.cc:430

4

2 に答える 2

2

これを試してもらえますか

 $gmworker->addServer('127.0.0.1','4730');
于 2013-09-05T12:56:04.933 に答える
1

コマンドプロンプトで php --ini と入力して、PHP CLI が使用する php.ini を確認します。php.ini で Gearman が有効になっていることを確認します。src Gearman 、php 拡張機能の問題: クラス 'GearmanWorker' が .. ターミナルを使用して見つかりませんが、ブラウザで動作します

于 2013-09-06T03:45:35.963 に答える