3 require_once 'CRM/Core/Page.php';
6 * An example page which queues several tasks and then executes them
8 class CRM_Demoqueue_Page_DemoQueue
extends CRM_Core_Page
{
9 const QUEUE_NAME
= 'demo-queue';
12 $queue = CRM_Queue_Service
::singleton()->create(array(
14 'name' => self
::QUEUE_NAME
,
18 for ($i = 0; $i < 5; $i++
) {
19 $queue->createItem(new CRM_Queue_Task(
20 array('CRM_Demoqueue_Page_DemoQueue', 'doMyWork'), // callback
21 array($i, "Task $i takes $i second(s)"), // arguments
25 $queue->createItem(new CRM_Queue_Task(
26 array('CRM_Demoqueue_Page_DemoQueue', 'addMoreWork'), // callback
28 "Add More Work" // title
33 $runner = new CRM_Queue_Runner(array(
34 'title' => ts('Demo Queue Runner'),
36 'onEnd' => array('CRM_Demoqueue_Page_DemoQueue', 'onEnd'),
37 'onEndUrl' => CRM_Utils_System
::url('civicrm/demo-queue/done'),
39 $runner->runAllViaWeb(); // does not return
43 * Perform some business logic
44 * @param \CRM_Queue_TaskContext $ctx
49 static function doMyWork(CRM_Queue_TaskContext
$ctx, $delay, $message) {
52 //$ctx->log->info($message); // PEAR Log interface
53 //$ctx->logy->info($message); // PEAR Log interface -- broken, PHP error
54 //CRM_Core_DAO::executeQuery('select from alsdkjfasdf'); // broken, PEAR error
55 //throw new Exception('whoz'); // broken, exception
56 return TRUE; // success
60 * Perform some business logic
61 * @param \CRM_Queue_TaskContext $ctx
64 static function addMoreWork(CRM_Queue_TaskContext
$ctx) {
66 for ($i = 0; $i < 5; $i++
) {
67 $ctx->queue
->createItem(new CRM_Queue_Task(
68 array('CRM_Demoqueue_Page_DemoQueue', 'doMyWork'), // callback
69 array($i, "Extra task $i takes $i second(s)"), // arguments
70 "Extra Task $i" // title
75 return TRUE; // success
79 * Handle the final step of the queue
80 * @param \CRM_Queue_TaskContext $ctx
82 static function onEnd(CRM_Queue_TaskContext
$ctx) {
83 //CRM_Utils_System::redirect('civicrm/demo-queue/done');
84 CRM_Core_Error
::debug_log_message('finished task');
85 //$ctx->logy->info($message); // PEAR Log interface -- broken, PHP error
86 //CRM_Core_DAO::executeQuery('select from alsdkjfasdf'); // broken, PEAR error
87 //throw new Exception('whoz'); // broken, exception