terminateClients() public static method

Terminates all clients
public static terminateClients ( )
Ejemplo n.º 1
0
//If we start service each minute we should eliminate exrtra messages like "Another process already running..."
$oPid->pidExistLevel = 'WARN';
$oPid->setLogger($logger)->create();
$interrupt = 0;
//Signal handler callback function
$sigHandler = function ($signo = null) use(&$interrupt, $oPid, $logger) {
    static $once = 0;
    $interrupt++;
    if ($once++) {
        return;
    }
    //Reporting about termination
    $logger->log("SERVICE", "Service recieved termination SIGNAL:%d", intval($signo));
    //We should stop all running tasks.
    //It's enough to terminate all running clients.
    Launcher::terminateClients();
    //Without this workers may not be terminated
    sleep(1);
    //Terminating an MDP broker, not sure we have to do so.
    Launcher::terminateBroker();
    //Removing pid file
    $oPid->remove();
};
pcntl_signal(SIGINT, $sigHandler);
pcntl_signal(SIGTERM, $sigHandler);
pcntl_signal(SIGHUP, $sigHandler);
register_shutdown_function($sigHandler);
$previous = new DateTime('-5 minutes');
$logger->log("SERVICE", "Starting service");
while (!$interrupt) {
    // System tymezone is considered to be used here