示例#1
0
 public static function init(Di $di, $defaultTube = 'default')
 {
     $config = $di->get('config');
     if (!isset($config->queue)) {
         return;
     }
     $params = (array) $config->queue;
     $di->setShared(self::SERVICE_NAME, function () use($params, $defaultTube) {
         $beanstalk = new Beanstalk($params);
         $beanstalk->choose($defaultTube);
         return $beanstalk;
     });
 }
示例#2
0
#!/usr/bin/env php
<?php 
use Phalcon\Queue\Beanstalk;
use Phalcon\Queue\Beanstalk\Job;
use Phalcon\DI;
use SlowProg\Mailer\MailerService;
// Подключаем конфиг приложения (исправить на свой)
$config = (require __DIR__ . '/app/config/config.php');
$di = new DI();
$di->set('config', $config);
$queue = new Beanstalk();
$queue->choose('mailer');
$di['queue'] = $queue;
/**
 * Register Mailer Service
 */
$di['mailer'] = function () {
    $service = new MailerService();
    return $service->mailer();
};
/** @var Job $job */
while (($job = $queue->peekReady()) !== false) {
    $data = json_decode($job->getBody(), true);
    $segments = explode(':', $data['job']);
    if (count($segments) !== 2) {
        continue;
    }
    call_user_func_array([$di[$segments[0]], $segments[1]], [$job, $data['data']]);
}
示例#3
0
 public function choose($tube)
 {
     return parent::choose($tube);
 }
示例#4
0
 /**
  * Queue a new e-mail message for sending
  *
  * @param string|array $view
  * @param array $data
  * @param \Closure|string $callback
  *
  * @return mixed
  */
 public function queue($view, array $data, $callback)
 {
     $callback = $this->buildQueueCallable($callback);
     $this->queue->choose('mailer');
     return $this->queue->put(json_encode(['job' => 'mailer:handleQueuedMessage', 'data' => ['view' => $view, 'data' => $data, 'callback' => $callback]]));
 }