All Projects → mitallast → Yii Gearman

mitallast / Yii Gearman

Licence: mit
yiiframework extension to route gearman functions at controller actions

WARNING!

This extension is deprecated, and I will no longer support this. On my experience, Gearman is not really failover server by design, do not use it for critical business apps. My recommendation - use fast and simple queue servers like beanstalkd, or queued with enabled binlog.

Это расширение представляет из себя набор компонентов для реализации воркеров. Воркеры - это асинхронные приложения, которые выполняют фоновую работу типа рассылки писем, ресайза картинок или импорта множества xml файлов.

Пример использования.

Допустим, у нас обычная структура Yii app: protected/ components/ controllers/ models/ extensions/ ...

Загружаем расширение в protected/extensions/worker/ .

Создаем новый конфигурационный файл protected/config/worker.php: return array( "basePath"=>dirname(FILE).DIRECTORY_SEPARATOR."..", "import"=>array( "ext.worker.*", ), "components"=>array( "worker"=>array( "class"=>"WorkerDaemon", "servers"=>array("127.0.0.1"), ), "router"=>array( "class"=>"WorkerRouter", "routes"=>array( "reverse"=>"application.controllers.gearman", ), ), ), );

Создаем bootstrap файл protected/worker.php, которым будет запускаться скрипт. // change the following paths if necessary $yii="yii/yii.php"; $config="config/worker.php";

require_once($yii); require_once("extensions/worker/WorkerApplication.php");

Yii::createApplication("WorkerApplication", $config)->run();

Добавим контроллер: class WorkerController extends AbstractWorkerController { public function actionReverse(WorkerJob $job) { $job->sendComplete($job->getWorkload()); echo $job->getWorkload(); echo "\n"; } }

Запустим воркер в консоли: home$: php protected/worker.php

И попробуем запустить его: $client = new GearmanClient(); $client->addServer("127.0.0.1");

//$result = $client->do("reverse", "string"); $client->addTaskBackground("reverse", "Hello world"); $client->runTasks();

В консоли, где запустили воркер, вы увидите собственно переданное от клиента сообщение.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].