GearmanClient::doStatus

(PECL gearman >= 0.5.0)

GearmanClient::doStatusПолучение статуса выполняющейся задачи

Описание

public GearmanClient::doStatus(): array

Возвращает статус обработки запущенной задачи. Этот метод вызывается между повторяющимися вызовами GearmanClient::doNormal().

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Массив, представляющий процентное отношение выполненной работы. Первый элемент соответствует количеству обработанных чанков, второй - общее количество данных.

Примеры

Пример #1 Получение состояния выполнения долгого задания

В этом примере в обработчик, переворачивающий строку, внедрена задержка, чтобы смоделировать долго выполняющееся задание. После каждой паузы обработчик выполняет GearmanJob::status(), результат которого подхватывается клиентом.

<?php

echo "Запуск\n";

# Создаём объект клиента.
$gmclient= new GearmanClient();

# Добавляем сервер по умолчанию (localhost).
$gmclient->addServer();

echo
"Отправка задание\n";

# Отправляем задание перевернуть строку
do
{
$result = $gmclient->doNormal("reverse", "Hello!");

# Проверяем, есть ли ошибки или готовые данные.
switch($gmclient->returnCode())
{
case
GEARMAN_WORK_DATA:
break;
case
GEARMAN_WORK_STATUS:
# получить статус выполнения задания
list($numerator, $denominator)= $gmclient->doStatus();
echo
"Статус: $numerator/$denominator завершено\n";
break;
case
GEARMAN_WORK_FAIL:
echo
"Ошибка\n";
exit;
case
GEARMAN_SUCCESS:
break;
default:
echo
"Код возврата: " . $gmclient->returnCode() . "\n";
exit;
}
}
while(
$gmclient->returnCode() != GEARMAN_SUCCESS);

echo
"Успешно: $result\n";

?>

Вывод приведённого примера будет похож на:

Запуск
Отправка задания
Состояние: 1/6 завершено
Состояние: 2/6 завершено
Состояние: 3/6 завершено
Состояние: 4/6 завершено
Состояние: 5/6 завершено
Состояние: 6/6 завершено
Успешно: !olleH

Смотрите также

  • GearmanClient::doNormal() - Выполняет одиночное задание и возвращает результат
  • GearmanJob::status() - Отправка статуса задания (устаревший метод)

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top