今天修改写脚本需要用到信号量控制脚本
下面是信号量控制类
<?php
class Signal { private static $signal;
private static $runing = true;
private function __construct() { if (PHP_SAPI != 'cli') { throw new \Exception('Must CLI Model'); } static::pcntl_signal(); }
private static function pcntl_signal() { pcntl_signal(SIGINT, function () { self::$runing = false; }, false); }
public static function dispatch() { self::init();
pcntl_signal_dispatch();
return self::$runing; }
private static function init() { if (!isset(static::$signal)) { static::$signal = new self(); }
return static::$signal; }
}
|
举个栗子:
public function test() { do { foreach (range(0, 1000) as $v) { echo $v, PHP_EOL; } echo 'end------------', PHP_EOL;
} while (Signal::dispatch()); }
|
嗯 对 原理就是接收到信号 然后终止循环 !