public function sendAction() { $config = ['driver' => 'smtp', 'host' => 'Host URL', 'port' => 587, 'encryption' => 'tls', 'username' => '*****@*****.**', 'password' => 'API secret key', 'from' => ['email' => '*****@*****.**', 'name' => 'Customer Support']]; $mailer = new \Phalcon\Ext\Mailer\Manager($config); $queue = new Phalcon\Queue\Beanstalk(array('host' => '127.0.0.1', 'port' => '11300')); $queue->put(array('sendEmail' => rand())); while (($job = $queue->peekReady()) !== false) { $to = $this->request->getPost('to'); $subject = $this->request->getPost('subject'); $content = $this->request->getPost('content'); $message = $mailer->createMessage()->to($to)->subject($subject)->content($content); $message->send(); $job->delete(); } return $this->flash->success("Email has been put to the queue!"); }
public function testBasic() { $queue = new Phalcon\Queue\Beanstalk(); try { @$queue->connect(); } catch (Exception $e) { $this->markTestSkipped($e->getMessage()); return; } $expected = array('processVideo' => 4871); $queue->put($expected); while (($job = $queue->peekReady()) !== false) { $actual = $job->getBody(); $job->delete(); $this->assertEquals($expected, $actual); } }
public function run() { $config = DI::getDefault()->getConfig(); $queue = new Phalcon\Queue\Beanstalk(array('host' => $config->monitor->beanstalkHost, 'port' => $config->monitor->beanstalkPort)); while (($job = $queue->peekReady()) !== false) { $message = $job->getBody(); if (isset($message['GatewayStatusUpdate'])) { $gatewayId = $message['GatewayStatusUpdate']; $gateway = Gateway::findFirstByID($gatewayId); if ($gateway) { $slackMessage = 'Gateway ' . $gateway->eui; if (!empty($gateway->remarks)) { $slackMessage .= ' (' . $gateway->remarks . ')'; } $slackMessage .= ' is now ' . $gateway->status . '!'; $slackMessage .= "\n" . 'it was last seen on ' . $gateway->last_seen; $slackMessage .= "\n" . 'more details at <http://ttnstatus.org/gateways/' . $gateway->eui . '>'; $this->sendSlackMessage($slackMessage); } } $job->delete(); } }
public function testReleaseKickBury() { $queue = new Phalcon\Queue\Beanstalk(); try { @$queue->connect(); } catch (Exception $e) { $this->markTestSkipped($e->getMessage()); return; } $this->assertTrue($queue->choose('beanstalk-test') !== false); $task = 'doSomething'; $this->assertTrue($queue->put($task) !== false); $this->assertTrue($queue->watch('beanstalk-test') !== false); $job = $queue->reserve(0); $this->assertTrue($job !== false); $this->assertEquals($task, $job->getBody()); $this->assertTrue($job->touch()); // Release the job; it moves to the ready queue $this->assertTrue($job->release()); $job = $queue->reserve(0); $this->assertTrue($job !== false); $this->assertEquals($task, $job->getBody()); // Bury the job $this->assertTrue($job->bury()); $job = $queue->peekBuried(); $this->assertTrue($job !== false); $this->assertEquals($task, $job->getBody()); // Kick the job, it should move to the ready queue again // kick-job is supported since 1.8 if (false !== $job->kick()) { $job = $queue->peekReady(); $this->assertTrue($job !== false); $this->assertEquals($task, $job->getBody()); } $this->assertTrue($job->delete()); }
public function testStats() { $queue = new Phalcon\Queue\Beanstalk(); try { @$queue->connect(); } catch (Exception $e) { $this->markTestSkipped($e->getMessage()); return; } $this->assertTrue($queue->choose('beanstalk-test') !== false); $queueStats = $queue->stats(); $this->assertTrue(is_array($queueStats)); $tubeStats = $queue->statsTube('beanstalk-test'); $this->assertTrue(is_array($tubeStats)); $this->assertTrue($tubeStats['name'] === 'beanstalk-test'); $this->assertTrue($queue->statsTube('beanstalk-test-does-not-exist') === false); $this->assertTrue($queue->choose('beanstalk-test') !== false); $queue->put('doSomething'); $queue->watch('beanstalk-test'); $job = $queue->peekReady(); $jobStats = $job->stats(); $this->assertTrue(is_array($jobStats)); $this->assertTrue($jobStats['tube'] === 'beanstalk-test'); }