コード例 #1
0
ファイル: Octave_pool.php プロジェクト: gutza/octave-daemon
 public static function manageConnections()
 {
     $still_waiting = array();
     foreach (self::$pending_connections as $cSocket) {
         if ($kid =& self::getChild($cSocket)) {
             $pid = pcntl_fork();
             if ($pid == -1) {
                 Octave_logger::log("Failed forking!", LOG_ERR);
                 exit;
             } elseif ($pid) {
                 // Parent
                 Octave_daemon::$child_pids[$pid] = true;
                 $kid->pid = $pid;
                 $kid->close();
             } else {
                 // Child
                 Octave_daemon::childMode();
                 chdir(self::$home_directory);
                 $kid->entertain();
                 $kid->killSocket();
                 exit;
             }
         } else {
             $still_waiting[] = $cSocket;
         }
     }
     self::$pending_connections = $still_waiting;
 }