(PECL gearman >= 0.5.0)
GearmanClient::doBackground — Запускает выполнение задачи в фоновом режиме
$function_name
, string $workload
[, string $unique
] ) : stringЗапускает выполнение задачи в фоновом режиме, возвращая дескриптор задания, который может быть использован для запроса состояния выполняющейся задачи.
function_name
Зарегистрированная функция, вызываемая рабочим процессом
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 завершено!