【问题标题】:gearman doBackground() not working with phpgearman doBackground() 不使用 php
【发布时间】:2013-09-05 12:47:35
【问题描述】:

我在本地系统上运行 ubuntu 12.04 64 位、PHP 5.3.10、gearman 1.1.5。 以下代码

print gearman_version() . "\n";

抛出php警告

PHP 警告:模块 'gearman' 已在第 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 管理员 arg1 这给了我错误

PHP 错误[2]: GearmanClient::doBackground(): send_packet(GEARMAN_COULD_NOT_CONNECT) 发送服务器选项包失败 -> libgearman/connection.cc:430

【问题讨论】:

    标签: php yii gearman worker producer


    【解决方案1】:

    你可以试试这个

     $gmworker->addServer('127.0.0.1','4730');
    

    【讨论】:

    • PHP Warning: Module 'gearman' already loaded in Unknown on line 0这个错误有什么解决办法。
    【解决方案2】:

    在命令提示符下键入 php --ini 以查看您的 PHP CLI 使用的 php.ini。确保在那个 php.ini 中启用了 Gearman。源代码Gearman , php extension problem : Class 'GearmanWorker' not found in .. using terminal but works on browser

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多