Back to DaemonApplication class

Method isActive

public bool
isActive
()
Check to see if the daemon is active. This does not assume that $this daemon is active, but only if an instance of the application is active as a daemon.
Returns
  • bool True if daemon is active.
Since
  • 1.7.0

Method isActive - Source code

/**
 * Check to see if the daemon is active.  This does not assume that $this daemon is active, but
 * only if an instance of the application is active as a daemon.
 *
 * @return  boolean  True if daemon is active.
 *
 * @since   1.7.0
 */
public function isActive()
{
    // Get the process id file location for the application.
    $pidFile = $this->config->get('application_pid_file');
    // If the process id file doesn't exist then the daemon is obviously not running.
    if (!is_file($pidFile)) {
        return false;
    }
    // Read the contents of the process id file as an integer.
    $fp = fopen($pidFile, 'r');
    $pid = fread($fp, filesize($pidFile));
    $pid = (int) $pid;
    fclose($fp);
    // Check to make sure that the process id exists as a positive integer.
    if (!$pid) {
        return false;
    }
    // Check to make sure the process is active by pinging it and ensure it responds.
    if (!posix_kill($pid, 0)) {
        // No response so remove the process id file and log the situation.
        @unlink($pidFile);
        Log::add('The process found based on PID file was unresponsive.', Log::WARNING);
        return false;
    }
    return true;
}