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"); }
function startWorker($QUEUE, $logLevel, $logger, $interval) { $queues = explode(',', $QUEUE); $worker = new Resque_Worker($queues); $worker->registerLogger($logger); $worker->logLevel = $logLevel; $worker->work($interval); }
/** * 启动消息列队处理器 * @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); }
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);
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); }
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); } }