예제 #1
0
 protected function createServer()
 {
     $server = new \swoole_http_server($this->host, $this->port);
     $server->on('start', [$this, 'onServerStart']);
     $server->on('shutdown', [$this, 'onServerStop']);
     $server->on('managerStart', [$this, 'onManagerStart']);
     $server->on('workerStart', [$this, 'onWorkerStart']);
     $server->on('workerStop', [$this, 'onWorkerStop']);
     $server->on('request', [$this, 'onRequest']);
     if (method_exists($this, 'onOpen')) {
         $server->on('open', [$this, 'onOpen']);
     }
     if (method_exists($this, 'onClose')) {
         $server->on('close', [$this, 'onClose']);
     }
     if (method_exists($this, 'onWsHandshake')) {
         $server->on('handshake', [$this, 'onWsHandshake']);
     }
     if (method_exists($this, 'onWsMessage')) {
         $server->on('message', [$this, 'onWsMessage']);
     }
     if (method_exists($this, 'onTask')) {
         $server->on('task', [$this, 'onTask']);
     }
     if (method_exists($this, 'onFinish')) {
         $server->on('finish', [$this, 'onFinish']);
     }
     $server->set($this->normalizedConfig());
     return $server;
 }
예제 #2
0
파일: HttpServer.php 프로젝트: nosun/yaf
 public function __construct()
 {
     $http = new swoole_http_server("0.0.0.0", 9501);
     $http->set(array('worker_num' => 16, 'daemonize' => true, 'max_request' => 10000, 'dispatch_mode' => 1));
     $http->on('Request', array($this, 'onRequest'));
     $http->start();
 }
예제 #3
0
파일: Server.php 프로젝트: aoyel/angel
 /**
  *
  * @param string $host        	
  * @param int $port        	
  * @param array $config        	
  */
 public function start()
 {
     $server = new \swoole_http_server($this->host, $this->port);
     $server->set($this->config);
     $server->on('Request', array($this, 'onRequest'));
     $server->start();
 }
예제 #4
0
파일: run.php 프로젝트: coooold/swCoroutine
 public function start($host, $port)
 {
     $controller = $this->controller;
     $http = new \swoole_http_server($host, $port, SWOOLE_BASE);
     $http->on('request', array($this, 'onRequest'));
     $http->set(['worker_num' => 2]);
     $http->start();
 }
예제 #5
0
 public function __construct($ip, $port)
 {
     parent::__construct();
     $this->server = $server = new \swoole_http_server($ip, $port);
     $server->on('Request', function ($request, $response) {
         $request = new \Owl\Swoole\Request($request);
         $response = new \Owl\Swoole\Response($response);
         $this->execute($request, $response);
     });
 }
예제 #6
0
 public function __construct()
 {
     $http = new swoole_http_server("0.0.0.0", 9501);
     $http->set(array('worker_num' => 16, 'daemonize' => true, 'max_request' => 10000, 'dispatch_mode' => 1));
     define('APPLICATION_PATH', dirname(dirname(__DIR__)) . "/application");
     $this->application = new Yaf_Application(dirname(APPLICATION_PATH) . "/conf/application.ini");
     $this->application->bootstrap();
     $http->on('Request', array($this, 'onRequest'));
     $http->start();
 }
예제 #7
0
 function run($_setting = array())
 {
     $default_setting = array('worker_num' => 4);
     $this->pid_file = $_setting['pid_file'];
     $setting = array_merge($default_setting, $_setting);
     $serv = new \swoole_http_server('0.0.0.0', self::PORT, SWOOLE_PROCESS);
     $serv->set($setting);
     $serv->on('Request', array($this, 'onRequest'));
     $this->serv = $serv;
     $this->serv->start();
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $kernel = $this->getContainer()->get('kernel');
     $http = new \swoole_http_server($input->getOption('host'), $input->getOption('port'));
     $http->on('request', function ($req, $res) use($kernel, $http) {
         $symfonyRequest = Request::createSymfonyRequest($req);
         $symfonyResponse = $kernel->handle($symfonyRequest);
         Response::send($res, $symfonyResponse);
         $kernel->terminate($symfonyRequest, $symfonyResponse);
     });
     $http->start();
 }
예제 #9
0
 /**
  * {@inheritdoc}
  */
 public function stop()
 {
     $pid = posix_getpid();
     if ($this->parentPid != $pid) {
         //kill the thread
         posix_kill($pid, SIGTERM);
         //TODO
     } elseif ($this->parentPid == $pid && null !== $this->server) {
         $this->server->shutdown();
         $this->server = null;
     }
 }
예제 #10
0
 public function __construct()
 {
     $http = new swoole_http_server("0.0.0.0", 8080);
     $http->set(array('worker_num' => 16, 'max_conn' => 10000, 'max_request' => 5000, 'dispatch_mode' => 1, 'daemonize' => 1, 'log_file' => '/var/log/swoole.log'));
     $http->on('WorkerStart', array($this, 'onWorkerStart'));
     $http->on('request', function ($request, $response) {
         if (isset($request->server)) {
             HttpServer::$server = $request->server;
         } else {
             HttpServer::$server = [];
         }
         if (isset($request->header)) {
             HttpServer::$header = $request->header;
         } else {
             HttpServer::$header = [];
         }
         if (isset($request->get)) {
             HttpServer::$get = $request->get;
         } else {
             HttpServer::$get = [];
         }
         if (isset($request->post)) {
             HttpServer::$post = $request->post;
         } else {
             HttpServer::$post = [];
         }
         // TODO handle img
         ob_start();
         try {
             //var_dump(HttpServer::$server['request_uri']);
             $_SERVER['REQUEST_URI'] = HttpServer::$server['request_uri'];
             //$_SERVER['REMOTE_ADDR'] = HttpServer::$server['request_uri'];
             $yaf_request = new Yaf_Request_Http(HttpServer::$server['request_uri']);
             $this->application->getDispatcher()->dispatch($yaf_request);
             // unset(Yaf_Application::app());
         } catch (\Exception $e) {
             var_dump($e);
         }
         $result = ob_get_contents();
         ob_end_clean();
         // add Header
         $response->header('Content-Type', 'no-cache, must-revalidate');
         $response->header('Content-Type', 'application/json');
         //$response->header('Content-Encoding', 'gzip');
         $response->header('Server', 'verycloud');
         // add cookies
         // set status
         $response->end($result);
     });
     $http->on('WorkerStop', array($this, 'onWorkerStop'));
     $http->start();
 }
예제 #11
0
 public function __construct($laravelDir, $options, $kernelClass = '\\App\\Http\\Kernel')
 {
     $this->laravelDir = realpath($laravelDir);
     $this->compiledPath = $this->laravelDir . 'bootstrap/cache/compiled.php';
     if (LOAD_COMPILED_BEFORE_WORKER) {
         $this->loadCompiledAndInitSth();
     }
     $this->swoole_http_server = $server = new \swoole_http_server($options['listen_ip'], $options['listen_port']);
     $this->kernelClass = $kernelClass;
     $server->set($options);
     $server->on('WorkerStart', array($this, 'onWorkerStart'));
     $server->on('request', array($this, 'onRequest'));
     return $this;
 }
예제 #12
0
 /**
  * @param App $app
  * @param array $serverSettings
  */
 public function __construct(App $app, array $serverSettings = [])
 {
     $app->getContainer()['http.server.config'] = $serverSettings;
     $app->getContainer()['swoole.http.server'] = function ($container) {
         $httpServer = new \swoole_http_server($this->host, $this->port);
         $httpServer->set($container['http.server.config']);
         $httpServer->setGlobal(HTTP_GLOBAL_ALL);
         $httpServer->on('request', $container['http.request.handler']);
         return $httpServer;
     };
     $app->getContainer()['http.request.handler'] = function () use($app) {
         return new RequestHandler($app);
     };
     $this->app = $app;
 }
예제 #13
0
 public function __construct()
 {
     $http = new swoole_http_server("127.0.0.1", 9501);
     $http->set(array('worker_num' => 16, 'daemonize' => true, 'max_request' => 10000, 'dispatch_mode' => 1));
     $http->on('WorkerStart', array($this, 'onWorkerStart'));
     $http->on('request', function ($request, $response) {
         if (isset($request->server)) {
             HttpServer::$server = $request->server;
         } else {
             HttpServer::$server = [];
         }
         if (isset($request->header)) {
             HttpServer::$header = $request->header;
         } else {
             HttpServer::$header = [];
         }
         if (isset($request->get)) {
             HttpServer::$get = $request->get;
         } else {
             HttpServer::$get = [];
         }
         if (isset($request->post)) {
             HttpServer::$post = $request->post;
         } else {
             HttpServer::$post = [];
         }
         // TODO handle img
         ob_start();
         try {
             $yaf_request = new Yaf\Request_Http(HttpServer::$server['request_uri']);
             $this->application->getDispatcher()->dispatch($yaf_request);
             // unset(Yaf_Application::app());
         } catch (Yaf_Exception $e) {
             var_dump($e);
         }
         $result = ob_get_contents();
         ob_end_clean();
         // add Header
         // add cookies
         // set status
         $response->end($result);
     });
     $http->start();
 }
예제 #14
0
파일: server.php 프로젝트: dulumao/ycf
 public function __construct()
 {
     $http = new swoole_http_server("0.0.0.0", 9501);
     $http->set(array('worker_num' => 8, 'daemonize' => false, 'max_request' => 1000, 'dispatch_mode' => 1));
     $http->on('WorkerStart', array($this, 'onWorkerStart'));
     $http->on('request', function ($request, $response) {
         if (isset($request->server)) {
             HttpServer::$server = $request->server;
             foreach ($request->server as $key => $value) {
                 $_SERVER[strtoupper($key)] = $value;
             }
         }
         if (isset($request->header)) {
             HttpServer::$header = $request->header;
         }
         if (isset($request->get)) {
             HttpServer::$get = $request->get;
             foreach ($request->get as $key => $value) {
                 $_GET[$key] = $value;
             }
         }
         if (isset($request->post)) {
             HttpServer::$post = $request->post;
             foreach ($request->post as $key => $value) {
                 $_POST[$key] = $value;
             }
         }
         if (isset($request->request_uri)) {
             $_SERVER['REQUEST_URI'] = $request->request_uri;
         }
         ob_start();
         //实例化ycf对象
         try {
             Ycf\Core\YcfCore::run();
         } catch (Exception $e) {
             var_dump($e);
         }
         $result = ob_get_contents();
         ob_end_clean();
         $response->end($result);
         unset($result);
     });
     $http->start();
 }
예제 #15
0
파일: server.php 프로젝트: mgcxy/yiiSwoole
 public function __construct()
 {
     $http = new swoole_http_server("0.0.0.0", 9501);
     $http->set(array('worker_num' => 10, 'daemonize' => false, 'max_request' => 10000, 'dispatch_mode' => 1));
     $http->on('WorkerStart', array($this, 'onWorkerStart'));
     $http->on('request', function ($request, $response) {
         if (isset($request->server)) {
             HttpServer::$server = $request->server;
             foreach ($request->server as $key => $value) {
                 $_SERVER[strtoupper($key)] = $value;
             }
         }
         if (isset($request->header)) {
             HttpServer::$header = $request->header;
         }
         if (isset($request->get)) {
             HttpServer::$get = $request->get;
             foreach ($request->get as $key => $value) {
                 $_GET[$key] = $value;
             }
         }
         if (isset($request->post)) {
             HttpServer::$post = $request->post;
             foreach ($request->post as $key => $value) {
                 $_POST[$key] = $value;
             }
         }
         ob_start();
         //实例化yii对象
         try {
             $this->application = Yii::createWebApplication(FRAMEWORK_CONFIG);
             $this->application->run();
         } catch (Exception $e) {
             var_dump($e);
         }
         $result = ob_get_contents();
         ob_end_clean();
         $response->end($result);
         unset($result);
         unset($this->application);
     });
     $http->start();
 }
예제 #16
0
 /**
  * run server
  */
 public function run()
 {
     $this->app['Swoole'] = $this->server;
     echo "server started on http://{$this->app['Config']['server.hostname']}:{$this->app['Config']['server.port']}" . PHP_EOL;
     echo swoole_version() . PHP_EOL;
     /**
      * start swoole http server
      */
     $this->server->start();
 }
예제 #17
0
 public function __construct()
 {
     $http = new swoole_http_server("0.0.0.0", 9501);
     $http->set(array('worker_num' => 16, 'daemonize' => false, 'max_request' => 10000, 'dispatch_mode' => 1));
     $http->on('WorkerStart', array($this, 'onWorkerStart'));
     $http->on('request', function ($request, $response) {
         if (isset($request->server)) {
             SwooleHttpServer::$server = $request->server;
             foreach ($request->server as $key => $value) {
                 $_SERVER[strtoupper($key)] = $value;
             }
         }
         if (isset($request->header)) {
             SwooleHttpServer::$header = $request->header;
         }
         if (isset($request->get)) {
             SwooleHttpServer::$get = $request->get;
             foreach ($request->get as $key => $value) {
                 $_GET[$key] = $value;
             }
         }
         if (isset($request->post)) {
             SwooleHttpServer::$post = $request->post;
             foreach ($request->post as $key => $value) {
                 $_POST[$key] = $value;
             }
         }
         /*
         			$uri = explode( "?", $_SERVER['REQUEST_URI'] );
         			$_SERVER["PATH_INFO"] = $uri[0];
         			if (isset($uri[1])) {
         				$_SERVER['QUERY_STRING'] = $uri[1];
         			}*/
         $_SERVER['argv'][1] = $_SERVER["PATH_INFO"];
         ob_start();
         require_once '../../../ThinkPHP/ThinkPHP.php';
         $result = ob_get_contents();
         ob_end_clean();
         $response->end($result);
     });
     $http->start();
 }
예제 #18
0
파일: CxSwoole.php 프로젝트: cloklo/CxWoole
 public function run()
 {
     if (isset($this->on['workerstart'])) {
         $this->workerstart = $this->on['workerstart'];
     }
     $serv = new swoole_http_server(SWOOLE_HOST, SWOOLE_PORT);
     $serv->set($this->set);
     $this->on['start'] = array($this, 'onStart');
     //避免onStart被重写
     $this->on['request'] = array($this, 'onRequest');
     //避免Request被重写
     $this->on['shutdown'] = array($this, 'onShutdown');
     //避免Shutdown被重写
     $this->on['workerstart'] = array($this, 'onWorkerStart');
     //避免Workerstart被重写
     foreach ($this->on as $k => $v) {
         $serv->on($k, $v);
     }
     $serv->start();
 }
예제 #19
0
 public function __construct()
 {
     // 创建swoole_http_server对象
     $http = new swoole_http_server("0.0.0.0", 9501);
     // 设置参数
     $http->set(array('worker_num' => 16, 'daemonize' => false, 'max_request' => 10000, 'dispatch_mode' => 1));
     $http->setGlobal(HTTP_GLOBAL_ALL);
     // 绑定WorkerStart
     $http->on('WorkerStart', array($this, 'onWorkerStart'));
     // 绑定request
     $http->on('request', function ($request, $response) {
         ob_start();
         try {
             //注入uri
             $_GET['_url'] = $request->server['request_uri'];
             $application = new \Phalcon\Mvc\Application($this->di);
             echo $application->handle()->getContent();
         } catch (Exception $e) {
             echo $e->getMessage();
         }
         $result = ob_get_contents();
         ob_end_clean();
         $response->end($result);
     });
     $http->start();
 }
예제 #20
0
 public function __construct()
 {
     $http = new swoole_http_server('0.0.0.0', 9502);
     $http->set(array('worker_num' => 4, 'daemonize' => 0, 'dispatch_mode' => 1));
     $http->on('WorkerStart', array($this, 'onWorkerStart'));
     $http->on('request', function ($request, $response) {
         if (isset($request->server)) {
             HttpServer::$server = $request->server;
         } else {
             HttpServer::$server = [];
         }
         if (isset($request->header)) {
             HttpServer::$header = $request->header;
         } else {
             HttpServer::$header = [];
         }
         if (isset($request->get)) {
             HttpServer::$get = $request->get;
         } else {
             HttpServer::$get = [];
         }
         if (isset($request->post)) {
             HttpServer::$post = $request->post;
         } else {
             HttpServer::$post = [];
         }
         ob_start();
         try {
             $yaf_request = new Yaf_Request_Http(HttpServer::$server['request_uri']);
             $this->application->getDispatcher()->dispatch($yaf_request);
         } catch (Yaf_Exception $e) {
             var_dump($e);
         }
         $result = ob_get_contents();
         ob_end_clean();
         $response->end($result);
     });
     $http->start();
 }
예제 #21
0
 public function __construct()
 {
     $http = new swoole_http_server("0.0.0.0", 8059);
     $http->set(array('worker_num' => 1, 'daemonize' => false, 'max_request' => 5000, 'user' => 'apache', 'group' => 'apache'));
     $http->on('Start', array($this, 'onStart'));
     $http->on('WorkerStart', array($this, 'onWorkerStart'));
     $http->on('Request', array($this, 'onRequest'));
     $http->start();
 }
예제 #22
0
 /**
  * 初始化
  */
 private function __construct($ip, $port)
 {
     register_shutdown_function(array($this, 'handleFatal'));
     $http = new \swoole_http_server($ip, $port);
     $http->set(\Config\Server::getWebServerConfig());
     $http->on('WorkerStart', array($this, 'onWorkerStart'));
     $http->on('request', array($this, 'onRequest'));
     $http->on('start', array($this, 'onStart'));
     $http->start();
 }
예제 #23
0
 /**
  * 初始化
  */
 private function __construct()
 {
     define('CISWOOLE', TRUE);
     register_shutdown_function(array($this, 'handleFatal'));
     $http = new swoole_http_server("0.0.0.0", 9501);
     $http->set(array('worker_num' => 8, 'daemonize' => false, 'max_request' => 10000, 'dispatch_mode' => 1));
     $http->on('WorkerStart', array($this, 'onWorkerStart'));
     $http->on('request', array($this, 'onRequest'));
     $http->on('start', array($this, 'onStart'));
     $http->start();
 }
예제 #24
0
 /**
  * 初始化
  */
 private function __construct()
 {
     register_shutdown_function(array($this, 'handleFatal'));
     $http = new swoole_http_server("0.0.0.0", 9501);
     $http->set(array('worker_num' => 12, 'daemonize' => false, 'max_request' => 128, 'dispatch_mode' => 1, 'log_file' => '/home/bweb/logs/swoole.log', 'open_tcp_nodelay' => true));
     $http->on('WorkerStart', array($this, 'onWorkerStart'));
     $http->on('request', array($this, 'onRequest'));
     $http->on('start', array($this, 'onStart'));
     self::getYii();
     $http->start();
 }
예제 #25
0
 public function onInit()
 {
     $host = isset($this->_swoole_cfg['swoole']['swoole_host']) ? $this->_swoole_cfg['swoole']['swoole_host'] : '0.0.0.0';
     $port = isset($this->_swoole_cfg['swoole']['swoole_port']) ? $this->_swoole_cfg['swoole']['swoole_port'] : 80;
     $serv = new swoole_http_server($host, $port);
     /**
      * 这里对swoole进程进行设置
      */
     $serv->set($this->_getSwooleCoreCfg());
     $serv->on('WorkerStart', array($this, 'onWorkerStart'));
     $serv->on('WorkerStop', array($this, 'onWorkerStop'));
     $serv->on('Request', array($this, 'onRequest'));
     $serv->on('Task', array($this, 'onTask'));
     $serv->on('Finish', array($this, 'onFinish'));
     $this->_serv = $serv;
 }
예제 #26
0
 public function __construct()
 {
     // 创建swoole_http_server对象
     $http = new swoole_http_server("0.0.0.0", 9502);
     // 设置参数
     $http->set(array('worker_num' => 16, 'daemonize' => false, 'max_request' => 100000, 'dispatch_mode' => 1));
     $http->setGlobal(HTTP_GLOBAL_ALL);
     // 绑定WorkerStart
     $http->on('WorkerStart', array($this, 'onWorkerStart'));
     // 绑定request
     $http->on('request', array($this, 'onRequest'));
     //开启服务器
     $http->start();
 }
예제 #27
0
 function __construct($host = '0.0.0.0', $port = 80)
 {
     $this->sw_table = new \swoole_table($this->sw_table_size);
     /**
      * 内存表
      */
     $this->sw_table->column(self::$ConnectNameKey, \swoole_table::TYPE_INT, 8);
     //链接量
     $this->sw_table->column(self::$RequestingKey, \swoole_table::TYPE_INT, 8);
     //正在处理的请求
     $this->sw_table->create();
     $this->sw_table->set(self::$ConnectNameKey, [self::$ConnectNameKey => 0]);
     $this->sw_table->set(self::$RequestingKey, [self::$RequestingKey => 0]);
     $this->ConfigSWTable = new \swoole_table(1);
     $this->ConfigSWTable->column(self::HTTP_CONFIG_TABLE_KEY, \swoole_table::TYPE_STRING, 1024 * 5);
     $this->ConfigSWTable->create();
     //json 格式保存 服务器配置
     $this->ConfigSWTable->set(self::HTTP_CONFIG_TABLE_KEY, [self::HTTP_CONFIG_TABLE_KEY => '']);
     $this->createWorkerInfoTable();
     parent::__construct($host, $port);
 }
예제 #28
0
 public function __construct()
 {
     $http = new swoole_http_server("0.0.0.0", 9501);
     $http->set(array('worker_num' => 50, 'daemonize' => true, 'max_request' => 10000, 'dispatch_mode' => 16));
     $http->setGlobal(HTTP_GLOBAL_ALL);
     $http->on('Start', function () {
         if (function_exists('cli_set_process_title')) {
             cli_set_process_title('app_server');
         } else {
             if (function_exists('swoole_set_process_name')) {
                 swoole_set_process_name('app_server');
             }
         }
     });
     $http->on('Request', array($this, 'onRequest'));
     $http->start();
 }
예제 #29
0
<?php

function mylog($msg, $filename = 'hook_error')
{
    error_log(date("Y-m-d H:i:s") . "\t" . $msg . PHP_EOL, 3, __DIR__ . DIRECTORY_SEPARATOR . $filename . '.mylog');
}
define('PASSWORD', '');
$config = null;
$http = new swoole_http_server("0.0.0.0", 9501);
$http->set(['worker_num' => 4, 'daemonize' => 1]);
$http->on('request', function ($request, $response) {
    $response->end('ok');
    if (false !== strpos($request->server['path_info'], 'reload')) {
        global $http;
        $http->reload();
        return;
    }
    if (empty($request->post['hook'])) {
        mylog('hook data empty');
        return;
    }
    $data = json_decode($request->post['hook'], true);
    if (empty($data)) {
        //错误的数据
        mylog('hook no json data');
        return;
    }
    if (PASSWORD && $data['password'] != PASSWORD) {
        //密码不匹配
        mylog('password error');
        return;
예제 #30
0
파일: swoole.php 프로젝트: RunnerLee/http
<?php

/**
 * Created by PhpStorm.
 * User: janhuang
 * Date: 15/12/8
 * Time: 下午12:00
 * Github: https://www.github.com/janhuang
 * Coding: https://www.coding.net/janhuang
 * SegmentFault: http://segmentfault.com/u/janhuang
 * Blog: http://segmentfault.com/blog/janhuang
 * Gmail: bboyjanhuang@gmail.com
 * WebSite: http://www.janhuang.me
 */
include __DIR__ . '/../vendor/autoload.php';
$server = new \swoole_http_server('0.0.0.0', 9600);
$server->on('request', function ($request, $response) {
    $document_root = __DIR__;
    $script_name = 'swoole.php';
    print_r($request);
    $request = \FastD\Http\SwooleRequest::createRequestHandle($request, ['document_root' => $document_root, 'script_name' => $script_name]);
    print_r($request);
    $response->write('base : ' . $request->getBaseUrl() . '<br />');
    $response->write('request_uri: ' . $request->getRequestUri() . '<br />');
    $response->write('path_info: ' . $request->getPathInfo());
    $response->end('');
});
$server->start();