(PECL gearman >= 0.5.0)
GearmanClient::doBackground — Запускает выполнение задачи в фоновом режиме
Запускает выполнение задачи в фоновом режиме, возвращая дескриптор задания, который может быть использован для запроса состояния выполняющейся задачи.
function
Зарегистрированная функция, вызываемая рабочим процессом
workload
Сериализованные данные, подлежащие обработке
unique
Уникальный ID, назначаемый определённой задаче
Дескриптор задания для отправленной задачи.
Пример #1 Отправляет и отслеживает фоновое задание
Обработчик в этом примере имеет искусственную задержку, чтобы смоделировать длительное выполнение задания. Клиент периодически проверяет состояние выполняющегося задания.
<?php
$gmclient= new GearmanClient();
$gmclient->addServer();
$job_handle = $gmclient->doBackground("reverse", "this is a test");
if ($gmclient->returnCode() != GEARMAN_SUCCESS)
{
echo "неуспешный код возврата\n";
exit;
}
$done = false;
do
{
sleep(3);
$stat = $gmclient->jobStatus($job_handle);
if (!$stat[0]) // задание известно, но не выполнено
$done = true;
echo "Выполняется: " . ($stat[1] ? "true" : "false") . ", числитель: " . $stat[2] . ", знаменатель: " . $stat[3] . "\n";
}
while(!$done);
echo "завершено!\n";
?>
Вывод приведённого примера будет похож на:
Выполняется: true, числитель: 3, знаменатель: 14 Выполняется: true, числитель: 6, знаменатель: 14 Выполняется: true, числитель: 9, знаменатель: 14 Выполняется: true, числитель: 12, знаменатель: 14 Выполняется: false, числитель: 0, знаменатель: 0 завершено!