(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 завершено!