/**
  * 获得socket的上下文选项
  * @param string $worker_name
  * @return resource
  */
 protected static function getSocketContext($worker_name)
 {
     $context = null;
     // 根据手册5.3.3之前版本stream_socket_server 不支持 backlog 选项
     if (version_compare(PHP_VERSION, '5.3.3') < 0) {
         return $context;
     }
     // 读取worker的backlog
     $backlog = (int) Lib\Config::get($worker_name . '.backlog');
     // 没有设置或者不合法则尝试使用workerman.conf中的backlog设置
     if ($backlog <= 0) {
         $backlog = (int) Lib\Config::get('workerman.backlog');
     }
     // 都没设置backlog,使用默认值
     if ($backlog <= 0) {
         $backlog = self::DEFAULT_BACKLOG;
     }
     // backlog选项
     $opts = array('socket' => array('backlog' => $backlog));
     // 返回上下文
     $context = stream_context_create($opts);
     return $context;
 }
 /**
  * 记录日志
  * @param sring $str
  * @return void
  */
 protected function notice($str, $display = true)
 {
     $str = 'Worker[' . get_class($this) . ']:' . $str;
     Lib\Log::add($str);
     if ($display && Lib\Config::get('workerman.debug') == 1) {
         echo $str . "\n";
     }
 }
Exemple #3
0
 /**
  * 关闭标准输入输出
  * @return void
  */
 protected static function resetStdFd($force = false)
 {
     // 如果此进程配置是no_debug,则关闭输出
     if (!$force) {
         // 开发环境不关闭标准输出,用于调试
         if (Lib\Config::get('workerman.debug') == 1 && posix_ttyname(STDOUT)) {
             return;
         }
     }
     global $STDOUT, $STDERR;
     @fclose(STDOUT);
     @fclose(STDERR);
     // 将标准输出重定向到/dev/null
     $STDOUT = fopen('/dev/null', "rw+");
     $STDERR = fopen('/dev/null', "rw+");
 }