taskFactoryMode() публичный статический Метод

public static taskFactoryMode ( $conf )
Пример #1
0
 public function testRun_WithTimeout_WithOnTimeout()
 {
     Supervisor::taskFactoryMode(array('quantity' => 3, 'timeout' => 1, 'onTimeout' => array($this, 'onTimeout'), 'factory' => array($this, 'fetchTask_WithSleeping')))->start();
     $content = \file_get_contents($this->logFile);
     $arr = array_filter(explode(',', $content), function ($i) {
         return $i !== '';
     });
     sort($arr);
     $this->assertEquals(array('1', '4', '5', '7', '10', '13', '14'), $arr);
     $this->assertEquals(3, \count($this->timeoutProcesses));
 }
<?php

use Comos\Qpm\Supervision\Supervisor;
use Comos\Qpm\Process\Runnable;
use Comos\Qpm\Log\Logger;
require __DIR__ . '/bootstrap.inc.php';
Logger::useSimpleLogger(__FILE__ . '.log');
class Task implements Runnable
{
    private $stop = false;
    public function run()
    {
        declare (ticks=1);
        pcntl_signal(SIGTERM, array($this, 'onTerm'));
        echo "B";
        while (!$this->stop) {
            sleep(1);
            echo '.';
        }
        echo "BYE\n";
    }
    public function onTerm()
    {
        echo "TERM\n";
        $this->stop = true;
    }
}
Supervisor::taskFactoryMode(array('timeout' => 5, 'termTimeout' => 1, 'quantity' => 3, 'worker' => 'Task'))->start();