我的 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 设置工作线程函数时可以传递上下文数据,但我不清楚这是否是我需要的,甚至不清楚如何做到这一点。谢谢!!
是的,上下文数据是您需要的。
$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);
}