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