如何将全局变量传递给Gearman worker(PHP)

时间:2016-06-10 05:44:42

标签: php global-variables gearman

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

$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设置worker函数时可以传递上下文数据,但我不清楚这是我需要的,甚至是如何做到的。谢谢!

1 个答案:

答案 0 :(得分: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);
}