У меня проблема с Gearman и рабочим для PHP.Я хочу запустить ту же функцию в то же время.Но теперь Gearman, кажется, делает его очередью.
Вывод, который я ищу:
$ ./daemon.php
Starting daemon...
Received job: H:www-dev1:15
Received job: H:www-dev1:16
Finished
Finished
Но вывод текущего кода:
$ ./daemon.php
Starting daemon...
Received job: H:www-dev1:15
Finished
Received job: H:www-dev1:16
Finished
Можно ли форкнуть GearmanWorker с помощью pcntl_fork ()?
Клиент:
$client = new GearmanClient();
$client->addServer();
$args = array('test' => 'test1');
$args = serialize($args);
$client->doBackground('test', $args);
sleep(1);
$client->doBackground('test', $args);
echo "Done";
Рабочий:
#!/usr/bin/php
<?php
echo "Starting daemon..." . PHP_EOL;
$worker = new GearmanWorker();
$worker->addServer();
$worker->addFunction('test', 'testFunc');
while ($worker->work()) {
}
function testFunc($job) {
echo "Received job: " . $job->handle() . PHP_EOL;
sleep(10);
echo "Finished" . PHP_EOL;
}