class Bgtask_Manager (Управление фоновыми задачами)
Класс Bgtask_Manager используется для управления фоновыми задачами, отправки им сигналов, сбора статистики.
Необходимо помнить, что в качестве хранилища информации о задачах и сигналах по умолчанию используется MEMORY-таблица базы данных MySQL. При работе в development-режиме система собирает статистику по обращениям к базе данных, что приводит к утечке памяти в Zend_Db_Profiler. Отключайте режим разработчика при анализе хода выполнения фоновой задачи, если вы хотите узнать реальное потребление оперативной памяти.
class Bgtask_Manager
{
/*** Инстанцировать объект* @return Bgtask_Manager*/static public function getInstance();
/*** Установить адаптер хранилища заданий* @param Bgtask_Storage $storage*/public function setStorage(Bgtask_Storage $storage);
/*** Установить адаптер логгирования* @param Bgtask_Log $logger*/public function setLogger(Bgtask_Log $logger);
/*** Получить адаптер логгирования*/public function getLogger();
/*** Запустить выполнение фоновой задачи* @param string $launcher - const, task launcher* @param string $task - task object class name* @param array $config*/public function launch($launcher , $task , array $config)
/*** Получить список заданий* @return array*/public function getList()
/*** Получить информацию о задаче по ее pid* @param integer $pid* @return array*/public function get($pid)
/*** Послать сигнал фоновой задаче* @param integer $pid* @param integer $signal - const* @return void*/public function signal($pid , $signal)
/*** Установить конфигурацию задачи* @param integer $pid* @param array $config* @return void*/public function setConfig($pid , array $config)
/*** Получить конфигурацию задачи* @param integer $pid* @return array*/public function getConfig($pid)
/*** Уничтожить задачу* @param integer $pid* @return boolean*/public function kill($pid)
/*** Получить сигналы, предназначенные конкретной задаче по ее pid* @param integer $pid* @param boolean $clean — optional, очистить сигналы после получения* @return array();*/public function getSignals($pid , $clean = false)
/*** Удалить сигналы, предназначенные конкретной задаче по ее pid* @param integer $pid* @param array $sigId - optional* @return array*/public function clearSignals($pid , $sigId = false)
/*** Обновить состояние задачи* @param integer $pid - идентификатор* @param integer $opTotal - к-во ожидаемых операций* @param integer $opFinished — к-во завершенных операций* @param integer $status - константа, статус*/public function updateState($pid , $opTotal , $opFinished , $status)
/*** Проверить выполняется ли задача* @param integer $pid* @return boolean*/public function isLive($pid)
/*** Завершить выполнение (статус завершена)* @param integer $pid*/public function setFinished($pid)
/*** Остановить выполнение задачи* @param integer $pid*/public function setStoped($pid)
/*** Установить ошибку выполнения задачи* @param integer $pid*/public function setError($pid)
/*** Запустить выполнение задачи* @param integer $pid*/public function setStarted($pid)
/*** Добавить задачу и получить ее идентификатор (pid)* @param string $description* @return integer*/public function addTaskRecord($description)
}
Пример запуска выполнения фоновой задачи:
// инициализируем хранилище заданий
$bgStorage = new Bgtask_Storage_Orm( Model::factory('bgtask') , Model::factory('Bgtask_Signal'));
// инициализируем логгер
$logger = new Bgtask_Log_File('./.log/test'.date('YmdHis').'.txt');
// инициализируем Менеджер Фоновых Заданий
$tManager = Bgtask_Manager::getInstance();
// Устанавливаем хранилище и логгер
$tManager->setStorage($bgStorage);
$tManager->setLogger($logger);
// Запускаем задачу 'Task_Test'
$pid = $tManager->launch(Bgtask_Manager::LAUNCHER_JSON, 'Task_Test' , array());
comments powered by Disqus