2016-06-10 2 views
0

Мои работники Gearman должны подключиться к моей базе данных. Как передать ссылку на мою глобальную переменную $db? В приведенном ниже коде $db не определен в функции executeJob.Как передать глобальную переменную в Gearman worker (PHP)

$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, но это мне не ясно, если это то, что мне нужно, или даже, как это сделать. Благодаря!!

+0

Этот код оказывается внутри функции ...? – deceze

+0

Нет, фрагмент выше не входит в функцию. – bmonson

ответ

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); 
} 
Смежные вопросы