/**
  * 记录日志
  * @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";
     }
 }
示例#2
0
 /**
  * 获得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;
 }
示例#3
0
 * @license  http://www.opensource.org/licenses/mit-license.php MIT
 * @link     http://github.com/enygma/usher
 */
namespace Usher;

require_once 'Lib/Loader.php';
ob_start();
try {
    Lib\Loader::init();
    Lib\Console::init();
    Lib\Config::load();
} catch (\Exception $e) {
    Lib\Console\Output::msg('Error on setup: ' . $e->getMessage());
    die;
}
$projectName = Lib\Config::getOption('project.name');
Lib\Console\Output::msg('Executing project "' . $projectName . '"');
// get and execute our tasks
try {
    $app = new Lib\Application();
    $app->execute();
} catch (\Exception $e) {
    Lib\Console\Output::error('Error on build! (' . $e->getMessage() . ')');
}
if (Lib\Console::getOption('logFile') !== null) {
    $output = ob_get_contents();
    Lib\Utility\Logger::write($output);
}
if (Lib\Console::getOption('runQuiet') == true) {
    ob_end_clean();
}
示例#4
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+");
 }
示例#5
0
 /**
  * 根据配置文件创建Workers
  * @return void
  */
 protected static function createWorkers()
 {
     require_once WORKERMAN_ROOT_DIR . 'Core/ThreadWorker.php';
     $workers = Lib\Config::getAllWorkers();
     foreach ($workers as $worker_name => $config) {
         $main_socket = isset(self::$listenedSockets[$worker_name]) ? self::$listenedSockets[$worker_name] : null;
         $worker_file = \Man\Core\Lib\Config::get($worker_name . '.worker_file');
         self::$threads[$worker_name] = new \Pool($config['start_workers'], '\\Man\\Core\\Worker', array($main_socket, $worker_file, $worker_name));
         for ($i = 0; $i < $config['start_workers']; $i++) {
             self::$threads[$worker_name]->submit(new ThreadWorker());
         }
     }
 }