【问题标题】:How to pass global variable to Gearman worker (PHP)如何将全局变量传递给 Gearman 工作者(PHP)
【发布时间】:2016-06-10 05:44:41
【问题描述】:

我的 Gearman 工作人员需要连接到我的数据库。如何传递对我的全局 $db 变量的引用?在下面的代码中,$dbexecuteJob 函数中是未定义的。

$db = new mysqli($db_host, $db_user, $db_pass, $db_name, $db_port);

// set up Gearman worker
$worker = new GearmanWorker();
$worker->addServer();
$worker->addFunction("execute", "executeJob");
while($worker->work());

function executeJob($job) {
    global $db;
    print_r($db); \\ UNDEFINED
}

php 手册建议在使用addFunction 设置工作函数时可以传递上下文数据,但我不清楚这是否是我需要的,甚至不清楚如何去做。谢谢!!

【问题讨论】:

  • 这段代码是否恰好在函数内部...?
  • 不,上面的 sn-p 不在函数内。

标签: php global-variables gearman


【解决方案1】:

是的,你需要的是上下文数据。

$db = new mysqli($db_host, $db_user, $db_pass, $db_name, $db_port);

// set up Gearman worker
$worker = new GearmanWorker();
$worker->addServer();
$worker->addFunction("execute", "executeJob", $db);
while($worker->work());

function executeJob($job, $db) {
    print_r($db);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2019-12-26
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多