work() public méthode

Queues are checked every $interval (seconds) for new jobs.
public work ( integer $interval = Resque::DEFAULT_INTERVAL, $blocking = false )
$interval integer How often to check for new jobs across the queues.
 public function testCompletedJobReturnsCompletedStatus()
 {
     $token = Resque::enqueue('jobs', 'Test_Job', null, true);
     $this->worker->work(0);
     $status = new Resque_Job_Status($token);
     $this->assertEquals(Resque_Job_Status::STATUS_COMPLETE, $status->get());
 }
 /**
  * @test
  */
 public function it_sends_remove_file_command_to_file_remover_via_php_resque()
 {
     $this->assertTrue(file_exists($this->testFile));
     $commandBus = new CommandBus();
     $commandRouter = new CommandRouter();
     $messageDispatcher = new MessageDispatcher(['track_job_status' => true, 'queue' => 'php-resque-test-queue']);
     $commandRouter->route('Prooph\\ServiceBusTest\\Mock\\RemoveFileCommand')->to($messageDispatcher);
     $commandBus->utilize($commandRouter);
     $commandBus->utilize(new ForwardToRemoteMessageDispatcherStrategy(new ProophDomainMessageToRemoteMessageTranslator()));
     $jobId = null;
     $messageDispatcher->events()->attach('dispatch.post', function (EventInterface $e) use(&$jobId) {
         $jobId = $e->getParam('jobId');
     });
     $removeFile = RemoveFileCommand::fromPayload($this->testFile);
     $commandBus->dispatch($removeFile);
     $this->assertNotNull($jobId);
     $status = new \Resque_Job_Status($jobId);
     $this->assertEquals(\Resque_Job_Status::STATUS_WAITING, $status->get());
     $worker = new \Resque_Worker(array('php-resque-test-queue'));
     $worker->logLevel = 1;
     $worker->work(0);
     $worker->shutdown();
     $this->assertEquals(\Resque_Job_Status::STATUS_COMPLETE, $status->get());
     $this->assertFalse(file_exists($this->testFile));
 }
 private function work()
 {
     $worker = new \Resque_Worker(explode(',', $this->queue));
     $worker->logLevel = $this->loglevel();
     $worker->work($this->checker_interval);
     fwrite(STDOUT, '*** Starting worker ' . $worker . "\n");
 }
Exemple #4
0
function startWorker($QUEUE, $logLevel, $logger, $interval)
{
    $queues = explode(',', $QUEUE);
    $worker = new Resque_Worker($queues);
    $worker->registerLogger($logger);
    $worker->logLevel = $logLevel;
    $worker->work($interval);
}
Exemple #5
0
 /**
  * 启动消息列队处理器
  * @return void
  */
 public function actionStart()
 {
     $mypidFilePath = Yii::getAlias('@runtime/resque/mypid');
     FileHelper::createDirectory(dirname($mypidFilePath));
     file_put_contents($mypidFilePath, getmypid()) or die('Could not write PID information to ' . $PIDFILE);
     $worker = new \Resque_Worker('default');
     $worker->logLevel = \Resque_Worker::LOG_VERBOSE;
     $worker->work(5);
 }
        // pcntl_fork — 在当前进程当前位置产生分支(子进程)
        // fork是创建了一个子进程,父进程和子进程 都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程号,而子进程得到的是0。
        $pid = pcntl_fork();
        if ($pid == -1) {
            die("Could not fork worker " . $i . "\n");
        } else {
            if (!$pid) {
                // 如果是子进程,$pid为0
                $queues = explode(',', $QUEUE);
                $worker = new Resque_Worker($queues);
                $worker->logLevel = $logLevel;
                fwrite(STDOUT, '*** Starting worker ' . $worker . "\n");
                $worker->work($interval);
                break;
            }
        }
    }
} else {
    $queues = explode(',', $QUEUE);
    $worker = new Resque_Worker($queues);
    $worker->logLevel = $logLevel;
    // PIDFILE表示要存放PHP进程ID的文件
    $PIDFILE = getenv('PIDFILE');
    if ($PIDFILE) {
        // getmypid — 获取 PHP 进程的 ID
        // 将进程的ID写入PIDFILE中
        file_put_contents($PIDFILE, getmypid()) or die('Could not write PID information to ' . $PIDFILE);
    }
    fwrite(STDOUT, '*** Starting worker ' . $worker . "\n");
    $worker->work($interval);
}
Exemple #7
0
 public function testWorkerErasesItsStatsWhenShutdown()
 {
     Resque::enqueue('jobs', 'Test_Job');
     Resque::enqueue('jobs', 'Invalid_Job');
     $worker = new Resque_Worker('jobs');
     $worker->setLogger(new Resque_Log());
     $worker->work(0);
     $worker->work(0);
     $this->assertEquals(0, $worker->getStat('processed'));
     $this->assertEquals(0, $worker->getStat('failed'));
 }
<?php

/**
 * file TestWorker-resque.php 
 * ------------------------------------------ +
 * @abstract 示例 for 测试队列Workers
 * use to 监听接收QUEUE-Test
 * @date 2015/12 
 * @Usage:
 * ------------------------------------------ +
 */
require realpath(dirname(__FILE__) . "/../MsgQueue.php");
# 改为要监听的队列名
$QueueName = "QUEUE-Test";
$interval = 1;
$INTERVAL = getenv('INTERVAL');
if (!empty($INTERVAL)) {
    $interval = $INTERVAL;
}
$worker = new \Resque_Worker($QueueName);
fwrite(STDOUT, 'Starting worker Listening ' . $worker . "\n");
$worker->work($interval, FALSE);
Exemple #9
0
 public function actionRun()
 {
     $QUEUE = getenv('QUEUE');
     if (empty($QUEUE)) {
         die("Set QUEUE env var containing the list of queues to work.\n");
     }
     $REDIS_BACKEND = getenv('REDIS_BACKEND');
     if (!empty($REDIS_BACKEND)) {
         \Resque::setBackend($REDIS_BACKEND);
     }
     $logLevel = 0;
     $LOGGING = getenv('LOGGING');
     $VERBOSE = getenv('VERBOSE');
     $VVERBOSE = getenv('VVERBOSE');
     if (!empty($LOGGING) || !empty($VERBOSE)) {
         $logLevel = \Resque_Worker::LOG_NORMAL;
     } else {
         if (!empty($VVERBOSE)) {
             $logLevel = \Resque_Worker::LOG_VERBOSE;
         }
     }
     $APP_INCLUDE = getenv('APP_INCLUDE');
     if ($APP_INCLUDE) {
         if (!file_exists($APP_INCLUDE)) {
             die('APP_INCLUDE (' . $APP_INCLUDE . ") does not exist.\n");
         }
         require_once $APP_INCLUDE;
     }
     $interval = 5;
     $INTERVAL = getenv('INTERVAL');
     if (!empty($INTERVAL)) {
         $interval = $INTERVAL;
     }
     $count = 1;
     $COUNT = getenv('COUNT');
     if (!empty($COUNT) && $COUNT > 1) {
         $count = $COUNT;
     }
     if ($count > 1) {
         for ($i = 0; $i < $count; ++$i) {
             $pid = pcntl_fork();
             if ($pid == -1) {
                 die("Could not fork worker " . $i . "\n");
             } else {
                 if (!$pid) {
                     $queues = explode(',', $QUEUE);
                     $worker = new \Resque_Worker($queues);
                     $worker->logLevel = $logLevel;
                     fwrite(STDOUT, '*** Starting worker ' . $worker . "\n");
                     $worker->work($interval);
                     break;
                 }
             }
         }
     } else {
         $queues = explode(',', $QUEUE);
         $worker = new \Resque_Worker($queues);
         $worker->logLevel = $logLevel;
         $PIDFILE = getenv('PIDFILE');
         if ($PIDFILE) {
             file_put_contents($PIDFILE, getmypid()) or die('Could not write PID information to ' . $PIDFILE);
         }
         fwrite(STDOUT, '*** Starting worker ' . $worker . "\n");
         $worker->work($interval);
     }
 }
 /**
  * Start a single worker
  *
  * @param bool $isForked - is this worker forked
  */
 protected function startWorker($isForked = false)
 {
     $queues = explode(',', $this->queue);
     $worker = new Resque_Worker($queues);
     $worker->setLogger($this->logger);
     if (!$isForked) {
         $PIDFILE = getenv('PIDFILE');
         if ($PIDFILE) {
             file_put_contents($PIDFILE, getmypid()) or die('Could not write PID information to ' . $PIDFILE);
         }
     }
     fwrite(STDOUT, '[+] Starting worker ' . $worker . " " . $this->interval . PHP_EOL);
     $worker->work($this->interval);
 }
Exemple #11
0
if ($count > 1) {
    for ($i = 0; $i < $count; ++$i) {
        $pid = pcntl_fork();
        if ($pid == -1) {
            die("Could not fork worker " . $i . "\n");
        } else {
            if (!$pid) {
                $queues = explode(',', $QUEUE);
                $worker = new Resque_Worker($queues);
                $worker->logLevel = $logLevel;
                fwrite(STDOUT, '*** Starting worker ' . $worker . "\n");
                $worker->work($interval);
                break;
            }
        }
    }
} else {
    $queues = explode(',', $QUEUE);
    $worker = new Resque_Worker($queues);
    $worker->logLevel = $logLevel;
    $PIDFILE = getenv('PIDFILE');
    if ($PIDFILE) {
        file_put_contents($PIDFILE, getmypid()) or die('Could not write PID information to ' . $PIDFILE);
    }
    fwrite(STDOUT, '*** Starting worker ' . $worker . "\n");
    if ($MULTI == "true") {
        $worker->work($interval, TRUE);
    } else {
        $worker->work($interval);
    }
}