├── src
├── resource
│ ├── README.md
│ ├── .DS_Store
│ └── view
│ │ ├── http
│ │ └── home
│ │ │ └── main.html
│ │ └── ws
│ │ └── chat.html
├── runtime
│ ├── README.md
│ ├── temp
│ │ ├── temp_cache
│ │ │ └── 098f6bcd4621d373cade4e832627b4f6.php
│ │ └── temp_c
│ │ │ ├── 7103d428727f75b257e4e8f21b673bfc.c.php
│ │ │ └── 8488f1b8fa698b4a0857d8ffce7aee70.c.php
│ └── log
│ │ ├── link-httpd.log
│ │ ├── 2018-06-02.log
│ │ ├── 2018-06-07.log
│ │ └── ws.log
├── .DS_Store
├── web
│ ├── .DS_Store
│ ├── .htaccess
│ └── index.php
├── application
│ ├── .DS_Store
│ ├── middleware
│ │ └── App.php
│ ├── http
│ │ ├── model
│ │ │ └── Home.php
│ │ └── controller
│ │ │ └── Home.php
│ ├── command
│ │ └── Test.php
│ ├── exception
│ │ └── Handle.php
│ ├── provider
│ │ ├── TemplateProvider.php
│ │ ├── ErrorProvider.php
│ │ └── RouterProvider.php
│ ├── ws
│ │ └── controller
│ │ │ └── Handle.php
│ └── Kernel.php
├── common.php
├── route.php
└── bootstrap.php
├── bin
├── link.sh
├── .DS_Store
├── middleware
│ └── BinTest.php
├── command
│ ├── Test.php
│ └── WebSocket.php
├── provider
│ ├── DaemonProvider.php
│ ├── ConsoleProvider.php
│ └── ErrorProvider.php
├── exception
│ └── HttpdHandle.php
├── console
│ └── Kernel.php
├── link
├── http
│ └── Kernel.php
├── ws
├── rpc
│ └── Kernel.php
├── httpd
├── phprpc
├── phprpc_center
└── cli
├── conf
├── rpc
│ ├── customer
│ │ ├── center.php
│ │ ├── services.php
│ │ └── providers.php
│ └── provider
│ │ ├── center.php
│ │ ├── services.php
│ │ └── providers.php
├── cookie.php
├── command.php
├── event.php
├── cache.php
├── view.php
├── session.php
├── bin
│ ├── reload.php
│ ├── ws.php
│ ├── httpd.php
│ ├── phprpc.php
│ └── phprpc_center.php
├── database.php
├── middleware.php
├── configure.php
└── map.php
├── .DS_Store
├── .gitignore
├── swoole-ide-helper.phar
├── .env
├── .travis.yml
├── composer.json
├── LICENSE
└── README.md
/src/resource/README.md:
--------------------------------------------------------------------------------
1 | # LinkPHP 框架系统缓存日志目录
2 |
--------------------------------------------------------------------------------
/src/runtime/README.md:
--------------------------------------------------------------------------------
1 | # LinkPHP 框架系统缓存日志目录
2 |
--------------------------------------------------------------------------------
/bin/link.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | echo "Hello World !"
--------------------------------------------------------------------------------
/conf/rpc/customer/center.php:
--------------------------------------------------------------------------------
1 |
4 | test
--------------------------------------------------------------------------------
/conf/rpc/customer/services.php:
--------------------------------------------------------------------------------
1 | '',
5 | 'domain' => '',
6 | 'secure' => '',
7 | 'httponly' => '',
8 | 'expire' => ''
9 | ];
--------------------------------------------------------------------------------
/conf/command.php:
--------------------------------------------------------------------------------
1 | [
5 | // '\app\controller\main\Event::class';
6 | //]
7 | // 'test' => [
8 | // '\app\controller\main\Event::class',
9 | // ]
10 | ];
11 |
--------------------------------------------------------------------------------
/src/web/.htaccess:
--------------------------------------------------------------------------------
1 |
2 | Options +FollowSymlinks
3 | RewriteEngine On
4 |
5 | RewriteCond %{REQUEST_FILENAME} !-d
6 | RewriteCond %{REQUEST_FILENAME} !-f
7 | RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
8 |
9 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: false
2 |
3 | language: php
4 |
5 | before_install:
6 | - composer self-update
7 |
8 | install:
9 | - composer install --no-dev --no-interaction --ignore-platform-reqs
10 |
11 | script:
12 | - php bin/cli test
13 |
--------------------------------------------------------------------------------
/bin/middleware/BinTest.php:
--------------------------------------------------------------------------------
1 | 'File',
6 | // 缓存保存目录
7 | 'path' => RUNTIME_PATH . 'temp/temp_cache/',
8 | // 缓存前缀
9 | 'prefix' => '',
10 | // 缓存有效期 0表示永久缓存
11 | 'expire' => 0,
12 | 'ext' => '.php'
13 | ];
--------------------------------------------------------------------------------
/src/runtime/log/link-httpd.log:
--------------------------------------------------------------------------------
1 | [2018-06-20 19:35:59 #52069.1] NOTICE Server is shutdown now.
2 | [2018-06-20 20:17:59 #52141.1] NOTICE Server is shutdown now.
3 | [2018-06-22 00:52:06 #53777.1] NOTICE Server is shutdown now.
4 | [2018-06-22 12:01:22 #54299.1] NOTICE Server is shutdown now.
5 |
--------------------------------------------------------------------------------
/conf/rpc/customer/providers.php:
--------------------------------------------------------------------------------
1 | 'msm-center', //服务名称
5 | 'ip' => "0.0.0.0",
6 | 'port' => 9600,
7 | 'notify_port' => 9601,
8 | 'services' => [
9 | 'MessageService' => [
10 |
11 | ],
12 | ]
13 | ];
--------------------------------------------------------------------------------
/src/runtime/temp/temp_c/7103d428727f75b257e4e8f21b673bfc.c.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | BananaChat
8 |
9 |
10 |
11 | BananaChat
12 |
13 |
--------------------------------------------------------------------------------
/src/application/http/model/Home.php:
--------------------------------------------------------------------------------
1 | setAlias('test')->setDescription('test');
14 | }
15 |
16 | public function execute()
17 | {
18 | Application::get('linkphp\console\command\Output')->writeln('this is test');
19 | }
20 |
21 | }
--------------------------------------------------------------------------------
/src/application/command/Test.php:
--------------------------------------------------------------------------------
1 | setAlias('test')->setDescription('test');
14 | }
15 |
16 | public function execute()
17 | {
18 | Application::get('linkphp\console\Output')->writeln('this is test');
19 | }
20 |
21 | }
--------------------------------------------------------------------------------
/bin/provider/DaemonProvider.php:
--------------------------------------------------------------------------------
1 | make(\linkphp\console\Console::class)->init();
15 | return $definition;
16 | // TODO: Implement update() method.
17 | }
18 |
19 | }
--------------------------------------------------------------------------------
/conf/view.php:
--------------------------------------------------------------------------------
1 | 'default',
5 | 'default_theme_suffix' => '.html', //默认视图文件后缀
6 | 'temp_cache' => false, //是否开启模板缓存
7 | 'set_left_limiter' => '<{', //设置模板引擎左侧解析标签
8 | 'set_right_limiter' => '}>', //设置模板引擎右侧解析标签
9 | 'view_replace_str' => [],
10 |
11 | // 模板路径
12 | 'view_path' => '',
13 |
14 | 'storage_drive' => 'File',
15 | 'cache_time' => '1800',
16 | 'tpl_replace_string' => []
17 | ];
--------------------------------------------------------------------------------
/src/application/http/controller/Home.php:
--------------------------------------------------------------------------------
1 | 'json'
12 | ];
13 |
14 | public function main()
15 | {
16 | $model = model('app/http/model/Home');
17 | return ['code' => 200, 'msg' => $model->select()->toArray()];
18 | }
19 |
20 | public function index()
21 | {
22 | return $this->display('http/home/main');
23 | }
24 |
25 | }
--------------------------------------------------------------------------------
/bin/provider/ConsoleProvider.php:
--------------------------------------------------------------------------------
1 | make(\linkphp\console\Console::class)
13 | ->import(
14 | require LOAD_PATH . 'command.php'
15 | )->init();
16 | return $definition;
17 | // TODO: Implement update() method.
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/conf/rpc/provider/providers.php:
--------------------------------------------------------------------------------
1 | 'user-center', //服务名称
5 | 'ip' => "0.0.0.0",
6 | 'port' => 9512,
7 | 'services' => [
8 | 'UserService' => [
9 | // 其他业务参数
10 | // 'version' => 'xxx',
11 | // 'group' => 'xxx',
12 | // ...
13 | ],
14 | 'StudentUserService' => [
15 | // 其他业务参数
16 | // 'version' => 'xxx',
17 | // 'group' => 'xxx',
18 | // ...
19 | ],
20 | ]
21 | ];
--------------------------------------------------------------------------------
/src/resource/view/http/home/main.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | {$linkphp}
10 |
11 |
12 |
13 | {$linkphp}
14 |
16 |
17 |
--------------------------------------------------------------------------------
/src/runtime/log/2018-06-02.log:
--------------------------------------------------------------------------------
1 | [2018-06-02T07:45:43+00:00]
2 | run NOTICE:
3 | message: Use of undefined constant g - assumed 'g'
4 | file: /Users/liujun/workspace/php/linkphp/src/application/controller/main/Home.php
5 | line: 20
6 |
7 | [2018-06-02T07:45:43+00:00]
8 | run Exception:
9 | message: 无法加载模块
10 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
11 | line: 30
12 |
13 | [2018-06-02T07:46:15+00:00]
14 | run Exception:
15 | message: 无法加载模块
16 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
17 | line: 30
18 |
19 |
--------------------------------------------------------------------------------
/conf/session.php:
--------------------------------------------------------------------------------
1 | '',
5 | // SESSION_ID的提交变量,解决flash上传跨域
6 | 'var_session_id' => '',
7 | // SESSION 前缀
8 | 'prefix' => 'zq',
9 | // 驱动方式 支持redis memcache memcached
10 | 'type' => '',
11 | // 是否自动开启 SESSION
12 | 'session_on' => true,
13 | // session 保存时间
14 | 'expire' => 86400,
15 | // session 保存路径
16 | 'path' => '/',
17 | // session 有效域名
18 | 'domain' => 'zuanqun.com',
19 | // session 启用安全传输
20 | 'secure' => false,
21 | // httponly设置
22 | 'httponly' => '',
23 | ];
--------------------------------------------------------------------------------
/conf/bin/reload.php:
--------------------------------------------------------------------------------
1 | 'linkphp\\console\\daemon\\HotReload',
6 | 'server' => [
7 | // 类路径
8 | 'class' => 'linkphp\swoole\Reload',
9 | // 运行时的各项参数:https://wiki.swoole.com/wiki/page/274.html
10 | 'setting' => [
11 | // PID 文件
12 | 'pid_file' => RUNTIME_PATH . 'run/hot-reload.pid',
13 | // 日志文件路径
14 | 'log_file' => RUNTIME_PATH . 'tmp/hot-reload.log',
15 | // 子进程运行用户
16 | /* 'user' => 'www', */
17 | ]
18 | ]
19 | ];
--------------------------------------------------------------------------------
/bin/exception/HttpdHandle.php:
--------------------------------------------------------------------------------
1 | getErrorType()}: \n";
14 | $error_info .= "message: {$error->getMessage()} \n";
15 | $error_info .= "file: {$error->getFile()} \n";
16 | $error_info .= "line: {$error->getLine()} \n";
17 | $error_info .= "datetime: {$error->getTimestamp()} \n";
18 | $error_info .= "trace: {$error->getTrace()} \n";
19 |
20 | echo $error_info;
21 | }
22 |
23 | }
--------------------------------------------------------------------------------
/src/application/exception/Handle.php:
--------------------------------------------------------------------------------
1 | $error->getFile(),
15 | 'line' => $error->getLine(),
16 | 'error_type' => $error->getErrorType(),
17 | 'message' => $error->getMessage(),
18 | 'datetime' => $error->getTimestamp(),
19 | 'trace' => $error->getTrace()
20 | ];
21 | extract($data);
22 | include($error->getErrorView());
23 | }
24 |
25 | }
--------------------------------------------------------------------------------
/src/common.php:
--------------------------------------------------------------------------------
1 |
11 | // +----------------------------------------------------------------------
12 | // | 应用公共函数文件
13 | // +----------------------------------------------------------------------
14 |
--------------------------------------------------------------------------------
/src/application/provider/TemplateProvider.php:
--------------------------------------------------------------------------------
1 | engine();
16 | $view->config(require ROOT_PATH . 'conf/view.php')
17 | ->viewPath(CACHE_PATH . 'view/')
18 | ->root('')
19 | ->baseFile('');
20 | app()->containerInstance(
21 | 'linkphp\template\View',
22 | $view
23 | );
24 | return $eventDefinition;
25 | }
26 |
27 | }
--------------------------------------------------------------------------------
/bin/console/Kernel.php:
--------------------------------------------------------------------------------
1 | app->event('error');
14 | // TODO: Implement use() method.
15 | $this->app->event('console');
16 | // TODO: Implement response() method.
17 | return $this;
18 | }
19 |
20 | public function complete()
21 | {
22 | $httpRequest = $this->app->make('linkphp\http\HttpRequest');
23 | $httpRequest->setRequestHttpAccept('console');
24 | $httpRequest->setData($this->data)->send();
25 | // TODO: Implement complete() method.
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/bin/provider/ErrorProvider.php:
--------------------------------------------------------------------------------
1 | register(
15 | $error->setErrorView(EXTRA_PATH . 'tpl/error.html')
16 | ->setDebug(true)
17 | ->setErrHandle('bin\\exception\\HttpdHandle')
18 | )->complete();
19 | app()->containerInstance(
20 | 'linkphp\error\Error',
21 | $error
22 | );
23 | return $definition;
24 | // TODO: Implement update() method.
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/application/provider/ErrorProvider.php:
--------------------------------------------------------------------------------
1 | register(
15 | $error->setErrorView(EXTRA_PATH . 'tpl/error.html')
16 | ->setDebug(true)
17 | ->setErrHandle('app\\exception\\Handle')
18 | )->complete();
19 | app()->containerInstance(
20 | 'linkphp\error\Error',
21 | $error
22 | );
23 | return $definition;
24 | // TODO: Implement update() method.
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/conf/database.php:
--------------------------------------------------------------------------------
1 | 'mysql:host=127.0.0.1;dbname=linkphp',
5 | 'dns' => '',
6 | 'host' => Env::get('database.host', '127.0.0.1'), //一般不需要修改
7 | 'port' => Env::get('database.port', '3306'), //默认即可
8 | 'dbuser' => Env::get('database.dbuser', 'root'), //数据库用户名
9 | 'dbpwd' => Env::get('database.dbpwd', '123456'), //数据库密码
10 | 'charset' => 'utf8', //数据库编码
11 | 'dbname' => Env::get('database.dbname', 'linkphp'), //数据库名称
12 | 'dbprefix' => Env::get('database.dbprefix', 'lp_'), //数据库表前缀
13 | 'db_type' => 'mysql', //数据库类型 默认Mysql
14 | 'result_type' => PDO::FETCH_ASSOC,
15 | // 时间字段取出后的默认时间格式,默认为Y-m-d H:i:s
16 | 'datetime_format' => true,
17 | // Query类
18 | 'query' => \linkphp\db\Query::class,
19 | ];
--------------------------------------------------------------------------------
/bin/link:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | event(
12 | 'error',
13 | \bin\provider\ErrorProvider::class
14 | );
15 |
16 | $app->event(
17 | 'console',
18 | \bin\provider\ConsoleProvider::class
19 | );
20 |
21 | $kernel = $app->make(bin\console\Kernel::class);
22 |
23 | $kernel->daemon(function () use($app){
24 | // TODO: Implement request() method.
25 | $app->event('error');
26 | // TODO: Implement use() method.
27 | $app->make(\linkphp\console\Console::class)
28 | ->setDaemon(true)
29 | ->setDaemonConfig(LOAD_PATH . 'bin/reload.php');
30 | $app->event('console');
31 | });
32 |
33 | //这是命令行执行入口文件
--------------------------------------------------------------------------------
/src/route.php:
--------------------------------------------------------------------------------
1 | event('routerMiddleware', $event);
12 |
13 | //Router::get('/', function(HttpRequest $httpRequest){
14 | // view('main/home/main',[
15 | // 'linkphp' => 'linkphp'
16 | // ]);
17 | //});
18 |
19 | Router::get(':id/:test', function($id, $test, HttpRequest $httpRequest){
20 | // dump($id);
21 | // dump($httpRequest);
22 | return "闭包路由,不走实例控制器,直接闭包返回的结果。接收到的参数id:" . $id . ",test:".$test;
23 | });
24 | Router::ws('chat','/app/ws/Handle#ws');
25 | //Router::get('addons', '/addons/test/Test@main');
26 | Router::get('addons/:plugin', '/linkphp/addons/Bootstrap@boot', [], ['plugin' => '/[\s\S]*/']);
27 | Router::get('/', '/http/home/main');
28 |
29 | return [
30 | // ':id/:test' => ['/http/home/main',['method' => 'get']],
31 | ];
--------------------------------------------------------------------------------
/src/application/provider/RouterProvider.php:
--------------------------------------------------------------------------------
1 | make(\linkphp\router\Router::class);
14 | $router->init()
15 | ->import(require ROOT_PATH . 'src/route.php')
16 | ->setUrlModel('1')
17 | ->setDefaultPlatform('http')
18 | ->setDefaultController('Home')
19 | ->setDefaultAction('main')
20 | ->setVarPlatform('m')
21 | ->setVarController('c')
22 | ->setVarAction('a')
23 | ->setRouterOn('true')
24 | ->setNamespace(APP_NAMESPACE_NAME);
25 | return $definition;
26 | // TODO: Implement update() method.
27 | }
28 |
29 | }
--------------------------------------------------------------------------------
/bin/http/Kernel.php:
--------------------------------------------------------------------------------
1 | app->event('error');
14 | // TODO: Implement use() method.
15 | $this->app->make(\linkphp\console\Console::class)
16 | ->setDaemon(true)
17 | ->setDaemonConfig($config);
18 | /**
19 | * 设置应用启动中间件并监听执行
20 | */
21 | $this->app->hook('appMiddleware');
22 | $this->app->event('console');
23 | // TODO: Implement response() method.
24 | return $this;
25 | }
26 |
27 | public function complete()
28 | {
29 | parent::beforeComplete();
30 | return $this->request->setData($this->data)->send(true);
31 | // TODO: Implement complete() method.
32 | }
33 |
34 | }
--------------------------------------------------------------------------------
/bin/ws:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | event(
12 | 'error',
13 | \bin\provider\ErrorProvider::class
14 | );
15 |
16 | $app->event(
17 | 'console',
18 | \bin\provider\ConsoleProvider::class
19 | );
20 |
21 | $app->event(
22 | 'router',
23 | \app\provider\RouterProvider::class
24 | );
25 |
26 | $kernel = $app->make(bin\console\Kernel::class);
27 |
28 | $kernel->daemon(function () use($app){
29 | // TODO: Implement request() method.
30 | $app->event('error');
31 | // TODO: Implement use() method.
32 | $app->make(\linkphp\console\Console::class)
33 | ->setDaemon(true)
34 | ->setDaemonConfig(LOAD_PATH . 'bin/ws.php');
35 | $app->event('console');
36 | });
37 |
38 | //这是命令行执行入口文件
--------------------------------------------------------------------------------
/bin/rpc/Kernel.php:
--------------------------------------------------------------------------------
1 | app->event('error');
14 | // TODO: Implement use() method.
15 | $this->app->make(\linkphp\console\Console::class)
16 | ->setDaemon(true)
17 | ->setDaemonConfig($config);
18 | /**
19 | * 设置应用启动中间件并监听执行
20 | */
21 | app()->hook('appMiddleware');
22 | $this->app->event('console');
23 | // TODO: Implement response() method.
24 | return $this;
25 | }
26 |
27 | public function complete()
28 | {
29 | $httpRequest = $this->app->make(\linkphp\http\HttpRequest::class);
30 | return $httpRequest->setData($this->data)->send(true);
31 | // TODO: Implement complete() method.
32 | }
33 |
34 | }
--------------------------------------------------------------------------------
/conf/bin/ws.php:
--------------------------------------------------------------------------------
1 | 'linkphp\\console\\daemon\\WS',
6 | 'server' => [
7 | // 类路径
8 | 'class' => 'linkphp\swoole\websocket\WebSocketServer',
9 | // 主机
10 | 'host' => '127.0.0.1',
11 | // 端口
12 | 'port' => 9510,
13 | // 运行时的各项参数:https://wiki.swoole.com/wiki/page/274.html
14 | 'setting' => [
15 | // 连接处理线程数
16 | 'reactor_num' => 1, //reactor thread num
17 | 'worker_num' => 1, //worker process num
18 | 'backlog' => 128, //listen backlog
19 | 'max_request' => 1,
20 | 'dispatch_mode' => 1,
21 | // PID 文件
22 | 'pid_file' => RUNTIME_PATH . 'run/ws.pid',
23 | // 日志文件路径
24 | 'log_file' => RUNTIME_PATH . 'log/ws.log',
25 | // 子进程运行用户
26 | /* 'user' => 'www', */
27 | ]
28 | ]
29 | ];
--------------------------------------------------------------------------------
/conf/bin/httpd.php:
--------------------------------------------------------------------------------
1 | 'linkphp\\console\\daemon\\HttpServer',
6 | 'enable_static_handler' => true,
7 | 'document_root' => ROOT_PATH . 'src/web',
8 | 'server' => [
9 | // 类路径
10 | 'class' => 'linkphp\swoole\http\HttpdServer',
11 | // 主机
12 | 'host' => '127.0.0.1',
13 | // 端口
14 | 'port' => 9508,
15 | // 运行时的各项参数:https://wiki.swoole.com/wiki/page/274.html
16 | 'setting' => [
17 | // 连接处理线程数
18 | 'reactor_num' => 1, //reactor thread num
19 | 'worker_num' => 1, //worker process num
20 | 'backlog' => 128, //listen backlog
21 | 'max_request' => 1,
22 | 'dispatch_mode' => 1,
23 | // PID 文件
24 | 'pid_file' => RUNTIME_PATH . 'run/link-httpd.pid',
25 | // 日志文件路径
26 | 'log_file' => RUNTIME_PATH . 'log/link-httpd.log',
27 | // 子进程运行用户
28 | /* 'user' => 'www', */
29 | ]
30 | ]
31 | ];
--------------------------------------------------------------------------------
/conf/middleware.php:
--------------------------------------------------------------------------------
1 |
11 | // +----------------------------------------------------------------------
12 | // | 中间件配置文件
13 | // +----------------------------------------------------------------------
14 |
15 | return [
16 |
17 | 'beginMiddleware' => [
18 | \app\middleware\App::class
19 | ],
20 |
21 | 'appMiddleware' => [
22 | ],
23 |
24 | 'modelMiddleware' => [
25 | ],
26 |
27 | 'controllerMiddleware' => [
28 | ],
29 |
30 | 'actionMiddleware' => [
31 | ],
32 |
33 | 'destructMiddleware' => [
34 | ],
35 |
36 | ];
37 |
--------------------------------------------------------------------------------
/src/application/ws/controller/Handle.php:
--------------------------------------------------------------------------------
1 | fd}\n";
23 | }
24 |
25 | public function open(swoole_websocket_server $svr, swoole_http_request $req)
26 | {
27 | echo "server: open success with fd{$req->fd}\n";
28 | }
29 |
30 | public function message(swoole_server $server, swoole_websocket_frame $frame)
31 | {
32 | echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
33 | $server->push($frame->fd, "this is server");
34 | }
35 |
36 | public function close($ser, $fd)
37 | {
38 | echo "client {$fd} closed\n";
39 | }
40 |
41 | }
--------------------------------------------------------------------------------
/src/application/Kernel.php:
--------------------------------------------------------------------------------
1 | app->event('error');
14 | $this->app->event('router');
15 | // TODO: Implement response() method.
16 | // TODO: Implement use() method.
17 | /**
18 | * 设置应用启动中间件并监听执行
19 | */
20 |
21 | $this->app->hook('appMiddleware');
22 | $this->app->get(\linkphp\router\Router::class)
23 | ->setPath(
24 | $this->app->input('server.REQUEST_URI'))
25 | ->setGetParam(
26 | $this->app->input('get.'))
27 | ->setMethod(
28 | $this->request->getRequestMethod()
29 | )
30 | ->parser()
31 | ->dispatch();
32 | return $this;
33 | }
34 |
35 | public function complete()
36 | {
37 | $this->app->hook('destructMiddleware');
38 |
39 | parent::beforeComplete();
40 |
41 | $this->request->setData($this->data)->send();
42 | }
43 |
44 | }
--------------------------------------------------------------------------------
/conf/bin/phprpc.php:
--------------------------------------------------------------------------------
1 | 'phprpc\\server\\PhpRpcServer',
6 | 'server' => [
7 | // 类路径
8 | 'class' => 'phprpc\swoole\PhpRpcServer',
9 | // 主机
10 | 'host' => '127.0.0.1',
11 | // 端口
12 | 'port' => 8868,
13 | // 运行时的各项参数:https://wiki.swoole.com/wiki/page/274.html
14 | 'setting' => [
15 | // 连接处理线程数
16 | 'reactor_num' => 1, //reactor thread num
17 | 'worker_num' => 1, //worker process num
18 | 'backlog' => 128, //listen backlog
19 | 'max_request' => 1,
20 | 'open_length_check' => true,
21 | 'package_length_type' => 'N',
22 | 'package_body_offset' => 0,
23 | 'package_length_offset' => 4,
24 | 'package_max_length' => 2000000,
25 | 'dispatch_mode' => 1,
26 | // PID 文件
27 | 'pid_file' => RUNTIME_PATH . 'run/phprpc.pid',
28 | // 日志文件路径
29 | 'log_file' => RUNTIME_PATH . 'tmp/phprpc.log',
30 | // 子进程运行用户
31 | /* 'user' => 'www', */
32 | ]
33 | ]
34 | ];
--------------------------------------------------------------------------------
/conf/configure.php:
--------------------------------------------------------------------------------
1 |
11 | // +----------------------------------------------------------------------
12 | // | 公共配置文件
13 | // +----------------------------------------------------------------------
14 |
15 |
16 | return [
17 | //'配置项' => '配置值',
18 |
19 | //站点调试
20 | 'app_debug' => ENV::get('app.debug', true), //是否打开调试功能
21 |
22 | //系统安全配置
23 | 'token_turn_on' => false, //是否打开表单令牌验证
24 |
25 | //系统常用路径设置
26 | 'log_path' => CACHE_PATH . 'log/', //系统日志存储路径
27 |
28 | 'default_return_type' => 'view', //view json console xml jsonp
29 |
30 | 'dispatch_error_tmpl' => 'tpl/dispatch_jump',
31 |
32 | ];
33 |
34 |
--------------------------------------------------------------------------------
/conf/bin/phprpc_center.php:
--------------------------------------------------------------------------------
1 | 'phprpc\\server\\PhpRpcCenterServer',
6 | 'enable_static_handler' => true,
7 | 'document_root' => VENDOR_PATH . 'phprpc/src/center/web',
8 | 'server' => [
9 | // 类路径
10 | 'class' => 'phprpc\swoole\PhpRpcCenterServer',
11 | // 主机
12 | 'host' => '127.0.0.1',
13 | // 端口
14 | 'port' => 8869,
15 | // 运行时的各项参数:https://wiki.swoole.com/wiki/page/274.html
16 | 'setting' => [
17 | // 连接处理线程数
18 | 'reactor_num' => 1, //reactor thread num
19 | 'worker_num' => 1, //worker process num
20 | 'backlog' => 128, //listen backlog
21 | 'max_request' => 1,
22 | 'open_length_check' => true,
23 | 'package_length_type' => 'N',
24 | 'package_body_offset' => 0,
25 | 'package_length_offset' => 4,
26 | 'package_max_length' => 2000000,
27 | 'dispatch_mode' => 1,
28 | // PID 文件
29 | 'pid_file' => RUNTIME_PATH . 'run/phprpc_center.pid',
30 | // 日志文件路径
31 | 'log_file' => RUNTIME_PATH . 'tmp/phprpc_center.log',
32 | // 子进程运行用户
33 | /* 'user' => 'www', */
34 | ]
35 | ]
36 | ];
--------------------------------------------------------------------------------
/bin/httpd:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 |
12 | // +----------------------------------------------------------------------
13 | // | 命令行入口文件
14 | // +----------------------------------------------------------------------
15 |
16 | //目录基础常量的定义
17 | define('ROOT_PATH', dirname(__DIR__) . '/');
18 | //加载自动加载方法
19 | require(ROOT_PATH . 'vendor/linkphp/loader/src/Loader.php');
20 | //加载LinkPHP框架启动文件
21 | $app = require_once(ROOT_PATH . 'src/bootstrap.php');
22 |
23 | $app->event(
24 | 'error',
25 | \bin\provider\ErrorProvider::class
26 | );
27 |
28 | $app->event(
29 | 'console',
30 | \bin\provider\DaemonProvider::class
31 | );
32 |
33 | $app->event(
34 | 'router',
35 | \app\provider\RouterProvider::class
36 | );
37 |
38 | $kernel = $app->make(bin\http\Kernel::class);
39 |
40 | $kernel->start(LOAD_PATH . 'bin/httpd.php');
41 | //这是命令行执行入口文件
--------------------------------------------------------------------------------
/bin/phprpc:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 |
12 | // +----------------------------------------------------------------------
13 | // | 命令行入口文件
14 | // +----------------------------------------------------------------------
15 |
16 | //目录基础常量的定义
17 | define('ROOT_PATH', dirname(__DIR__) . '/');
18 | //加载自动加载方法
19 | require(ROOT_PATH . 'vendor/linkphp/loader/src/Loader.php');
20 | //加载LinkPHP框架启动文件
21 | $app = require_once(ROOT_PATH . 'src/bootstrap.php');
22 |
23 | $app->event(
24 | 'error',
25 | \bin\provider\ErrorProvider::class
26 | );
27 |
28 | $app->event(
29 | 'console',
30 | \bin\provider\DaemonProvider::class
31 | );
32 |
33 | $app->event(
34 | 'router',
35 | \app\provider\RouterProvider::class
36 | );
37 |
38 | $kernel = $app->make(bin\http\Kernel::class);
39 |
40 | $kernel->start(LOAD_PATH . 'bin/phprpc.php');
41 | //这是命令行执行入口文件
--------------------------------------------------------------------------------
/bin/phprpc_center:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 |
12 | // +----------------------------------------------------------------------
13 | // | 命令行入口文件
14 | // +----------------------------------------------------------------------
15 |
16 | //目录基础常量的定义
17 | define('ROOT_PATH', dirname(__DIR__) . '/');
18 | //加载自动加载方法
19 | require(ROOT_PATH . 'vendor/linkphp/loader/src/Loader.php');
20 | //加载LinkPHP框架启动文件
21 | $app = require_once(ROOT_PATH . 'src/bootstrap.php');
22 |
23 | $app->event(
24 | 'error',
25 | \app\provider\ErrorProvider::class
26 | );
27 |
28 | $app->event(
29 | 'console',
30 | \bin\provider\DaemonProvider::class
31 | );
32 |
33 | $app->event(
34 | 'router',
35 | \app\provider\RouterProvider::class
36 | );
37 |
38 | $kernel = $app->make(bin\http\Kernel::class);
39 |
40 | $kernel->start(LOAD_PATH . 'bin/phprpc_center.php');
41 | //这是命令行执行入口文件
--------------------------------------------------------------------------------
/bin/cli:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 |
12 | // +----------------------------------------------------------------------
13 | // | 命令行入口文件
14 | // +----------------------------------------------------------------------
15 |
16 | //目录基础常量的定义
17 | define('ROOT_PATH', dirname(__DIR__) . '/');
18 | //加载自动加载方法
19 | require(ROOT_PATH . 'vendor/linkphp/loader/src/Loader.php');
20 | //加载LinkPHP框架启动文件
21 | $app = require_once(ROOT_PATH . 'src/bootstrap.php');
22 |
23 | $app->event(
24 | 'error',
25 | \bin\provider\ErrorProvider::class
26 | );
27 |
28 | $app->event(
29 | 'console',
30 | \bin\provider\ConsoleProvider::class
31 | );
32 |
33 | $kernel = $app->make(bin\console\Kernel::class);
34 |
35 | $kernel->start()
36 | ->then(function () use ($kernel,$app){
37 | $kernel->setData($app->make(linkphp\console\Console::class)
38 | ->getReturnData());
39 | })->complete();
40 |
41 | //这是命令行执行入口文件
--------------------------------------------------------------------------------
/src/web/index.php:
--------------------------------------------------------------------------------
1 |
11 | // +----------------------------------------------------------------------
12 | // | 站点应用入口文件
13 | // +----------------------------------------------------------------------
14 |
15 | //目录基础常量的定义
16 | define('ROOT_PATH', dirname(dirname(__DIR__)) . '/');
17 | //加载自动加载方法
18 | require(ROOT_PATH . 'vendor/linkphp/loader/src/Loader.php');
19 | //加载LinkPHP框架启动文件
20 | $app = require_once(ROOT_PATH . 'src/bootstrap.php');
21 |
22 | $app->event(
23 | 'error',
24 | \app\provider\ErrorProvider::class
25 | );
26 |
27 | $app->event(
28 | 'router',
29 | \app\provider\RouterProvider::class
30 | );
31 |
32 | $kernel = $app->make(app\Kernel::class);
33 |
34 | $kernel->start()
35 | ->then(function () use ($kernel,$app){
36 | $kernel->setData($app->make(linkphp\router\Router::class)
37 | ->getReturnData());
38 | })->complete();
39 |
40 | //只需要这么几句话就可以运行 !>
11 | // +----------------------------------------------------------------------
12 | // | 映射文件
13 | // +----------------------------------------------------------------------
14 |
15 | return [
16 | //psr4命名空间注册
17 | 'autoload_namespace_psr4' => [
18 | 'app\\' => [
19 | ROOT_PATH . 'src/application'
20 | ],
21 | 'bin\\' => [
22 | ROOT_PATH . 'bin'
23 | ],
24 | ],
25 | //psr0命名空间
26 | 'autoload_namespace_psr0' => [
27 | //'命名空间' => '映射路径地址'
28 | ],
29 | //指定自动加载机制排序
30 | 'autoload_namespace_file' => [
31 | //'文件名' => '映射路径地址'
32 | 'defined' => ROOT_PATH . 'vendor/linkphp/framework/src/define.php',
33 | 'app_func' => ROOT_PATH . 'src/common.php',
34 | 'framework_func' => ROOT_PATH . 'vendor/linkphp/framework/src/helper.php'
35 | ],
36 | 'class_autoload_map' => [
37 | //'类名' => '类文件地址'
38 | ],
39 | ];
--------------------------------------------------------------------------------
/src/bootstrap.php:
--------------------------------------------------------------------------------
1 |
11 | // +----------------------------------------------------------------------
12 | // | LinkPHP框架启动文件
13 | // +----------------------------------------------------------------------
14 |
15 | $loader = new \linkphp\loader\Loader();
16 |
17 | //注册自动加载方法/合并conposer
18 | $loader->register(
19 | $loader->import(require_once(ROOT_PATH . 'conf/map.php'))
20 | ->setVendorPath(ROOT_PATH . 'vendor/')
21 | ->setLoadPath(ROOT_PATH . 'conf/')
22 | ->setExtendPath(ROOT_PATH . 'ext/')
23 | ->setFrameWorkPath(ROOT_PATH . 'vendor/linkphp/framework/src/')
24 | ->setExt('.php')
25 | )->complete();
26 |
27 | $app = new \framework\Application();
28 |
29 | $app->event(
30 | 'loader',
31 | \linkphp\loader\provider\RegisterProvider::class,
32 | true
33 | );
34 |
35 | $app->event(
36 | 'system',
37 | [
38 | \linkphp\event\provider\EnvProvider::class,
39 | \linkphp\event\provider\ConfigProvider::class,
40 | \linkphp\event\provider\MiddleProvider::class,
41 | \linkphp\event\provider\DatabaseProvider::class,
42 | \app\provider\TemplateProvider::class,
43 | ]
44 | );
45 |
46 | $app->containerInstance(
47 | \linkphp\loader\Loader::class,
48 | $loader
49 | );
50 |
51 | $app->containerInstance(
52 | \framework\Application::class,
53 | $app
54 | );
55 |
56 | //应用周期
57 | $app->run();
58 |
59 | return $app;
--------------------------------------------------------------------------------
/src/resource/view/ws/chat.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Websocket
6 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | 在线人数:
25 |
26 |
27 |
28 |
29 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/src/runtime/temp/temp_c/8488f1b8fa698b4a0857d8ffce7aee70.c.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Websocket
7 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | 在线人数:
26 |
27 |
28 |
29 |
30 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c)
2 |
3 | Anti 996 License Version 1.0 (Draft)
4 |
5 | Permission is hereby granted to any individual or legal entity
6 | obtaining a copy of this licensed work (including the source code,
7 | documentation and/or related items, hereinafter collectively referred
8 | to as the "licensed work"), free of charge, to deal with the licensed
9 | work for any purpose, including without limitation, the rights to use,
10 | reproduce, modify, prepare derivative works of, distribute, publish
11 | and sublicense the licensed work, subject to the following conditions:
12 |
13 | 1. The individual or the legal entity must conspicuously display,
14 | without modification, this License and the notice on each redistributed
15 | or derivative copy of the Licensed Work.
16 |
17 | 2. The individual or the legal entity must strictly comply with all
18 | applicable laws, regulations, rules and standards of the jurisdiction
19 | relating to labor and employment where the individual is physically
20 | located or where the individual was born or naturalized; or where the
21 | legal entity is registered or is operating (whichever is stricter). In
22 | case that the jurisdiction has no such laws, regulations, rules and
23 | standards or its laws, regulations, rules and standards are
24 | unenforceable, the individual or the legal entity are required to
25 | comply with Core International Labor Standards.
26 |
27 | 3. The individual or the legal entity shall not induce or force its
28 | employee(s), whether full-time or part-time, or its independent
29 | contractor(s), in any methods, to agree in oral or written form, to
30 | directly or indirectly restrict, weaken or relinquish his or her
31 | rights or remedies under such laws, regulations, rules and standards
32 | relating to labor and employment as mentioned above, no matter whether
33 | such written or oral agreement are enforceable under the laws of the
34 | said jurisdiction, nor shall such individual or the legal entity
35 | limit, in any methods, the rights of its employee(s) or independent
36 | contractor(s) from reporting or complaining to the copyright holder or
37 | relevant authorities monitoring the compliance of the license about
38 | its violation(s) of the said license.
39 |
40 | THE LICENSED WORK IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
42 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
43 | IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM,
44 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
45 | OTHERWISE, ARISING FROM, OUT OF OR IN ANY WAY CONNECTION WITH THE
46 | LICENSED WORK OR THE USE OR OTHER DEALINGS IN THE LICENSED WORK.
47 |
--------------------------------------------------------------------------------
/bin/command/WebSocket.php:
--------------------------------------------------------------------------------
1 | setAlias('websocket')->setDescription('websocket');
27 | }
28 |
29 | public function execute()
30 | {
31 | // $server = new swoole_websocket_server("127.0.0.1", 9502);
32 | //
33 | // $server->on('open', function($server, $req) {
34 | // Application::get('linkphp\console\command\Output')->writeln("connection open: {$req->fd}\n");
35 | // });
36 | //
37 | // $server->on('message', function($server, $frame) {
38 | // Application::get('linkphp\console\command\Output')->writeln("received message: {$frame->data}\n");
39 | // $server->push($frame->fd, $frame->data);
40 | // });
41 | //
42 | // $server->on('close', function($server, $fd) {
43 | // Application::get('linkphp\console\command\Output')->writeln("connection close: {$server}\n");
44 | // });
45 | // $this->webscoket = $server;
46 | // $server->start();
47 | }
48 |
49 | //操作命名
50 | public function commandHandle($command, $process) {
51 | if(!isset($this->process)){
52 | $this->process = $process;
53 | }
54 | if($command == 'start'){
55 | $server = new swoole_websocket_server("127.0.0.1", 9502);
56 |
57 | $server->on('open', function($server, $req) {
58 | Application::get('linkphp\console\command\Output')->writeln("connection open: {$req->fd}\n");
59 | });
60 |
61 | $server->on('message', function($server, $frame) {
62 | Application::get('linkphp\console\command\Output')->writeln("received message: {$frame->data}\n");
63 | $server->push($frame->fd, $frame->data);
64 | });
65 |
66 | $server->on('close', function($server, $fd) {
67 | Application::get('linkphp\console\command\Output')->writeln("connection close: {$server}\n");
68 | });
69 | $this->webscoket = $server;
70 | $server->start();
71 | return;
72 | }
73 | if ($command == 'status') {
74 | $stats = $this->webscoket->stats();
75 | Application::get('linkphp\console\command\Output')->writeln("查看状态: {$stats}\n");
76 | return;
77 | }
78 | if ($command == 'restart') {
79 | $reload = $this->webscoket->reload();
80 | Application::get('linkphp\console\command\Output')->writeln("重启成功: {$reload}\n");
81 | return;
82 | }
83 | if ($command == 'stop') {
84 | // dump($this->process->stop());die;
85 | $this->webscoket->stop() && $this->webscoket->shutdown();
86 | Application::get('linkphp\console\command\Output')->writeln('成功停止');
87 | return;
88 | }
89 | Application::get('linkphp\console\command\Output')->writeln('Unknown Command');
90 | }
91 |
92 |
93 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ```php
2 |
3 | _ _ _
4 | | | | | _ ___ | | ___
5 | | | ___ | | / / / _ \| |_ / _ \
6 | | | | \ \| |/ / | |_| || _ \ | |_| |
7 | | |_| |\ V |\ \ | .___/| | | || .___/
8 | |_____| \ _' \_\ | | | | | || |
9 |
10 |
11 | ```
12 |
13 | QQ: 750688237 有兴趣的可以一起探讨,项目还需要完善
14 |
15 | #### linkphp (临克) 是面向对象的轻量级常驻内存型PHP API开发框架 。
16 |
17 |
18 | ## **http服务器启动(常驻内存模式) [需要swoole扩展]**
19 |
20 | 进入
21 |
22 | ```php
23 | bin\
24 | ```
25 | 目录,使用命令
26 |
27 | ```
28 | php httpd start //启动
29 | php httpd stop //停止
30 |
31 | _ _ _
32 | | | | | _ ___ | | ___
33 | | | ___ | | / / / _ \| |_ / _ \
34 | | | | \ \| |/ / | |_| || _ \ | |_| |
35 | | |_| |\ V |\ \ | .___/| | | || .___/
36 | |_____| \ _' \_\ | | | | | || |
37 |
38 | [2018-06-01 15:43:12] Server Name: linkphp-httpd
39 | [2018-06-01 15:43:12] PHP Version: 7.1.7
40 | [2018-06-01 15:43:12] Swoole Version: 2.1.3
41 | [2018-06-01 15:43:12] Listen Address: 127.0.0.1
42 | [2018-06-01 15:43:12] Listen Port: 9508
43 |
44 | 第一种方式:使用linkphp提倡的以常驻内存形式启动方式,前端可以配合nginx负载均衡使用
45 |
46 | 第二种方式:传统的LNMP/LAMP方式启动,则将根目录定义到src/web目录下
47 | 将会由非内存形式启动,请求一次则会进行释放,无法使用常驻内存形式提高性能
48 | ```
49 |
50 | ### Nginx + httpd使用
51 |
52 | ```php
53 |
54 | server {
55 | root /wwwroot/;
56 | server_name www.linkphp.cn;
57 |
58 | location / {
59 | proxy_http_version 1.1;
60 | proxy_set_header Connection "keep-alive";
61 | proxy_set_header X-Real-IP $remote_addr;
62 | if (!-e $request_filename) {
63 | proxy_pass http://127.0.0.1:9508;
64 | }
65 | }
66 | }
67 |
68 | ```
69 |
70 | ## **WebSocket服务端启动(常驻内存模式)**
71 |
72 | ```php
73 |
74 | 首先注册一个websocket路由
75 |
76 | Router::ws('chat','/app/ws/Handle#ws');
77 |
78 | 在Handle控制器继承WebSocketInterface接口实现接口中的方法
79 |
80 | use linkphp\swoole\websocket\WebSocketInterface;
81 | use swoole_http_response;
82 | use swoole_websocket_server;
83 | use swoole_http_request;
84 | use swoole_server;
85 | use swoole_websocket_frame;
86 |
87 | class Handle implements WebSocketInterface
88 | {
89 |
90 | public function HandShake(swoole_http_request $request, swoole_http_response $response)
91 | {
92 | echo "server: handshake success with fd{$request->fd}\n";
93 | }
94 |
95 | public function open(swoole_websocket_server $svr, swoole_http_request $req)
96 | {
97 | echo "server: open success with fd{$req->fd}\n";
98 | }
99 |
100 | public function message(swoole_server $server, swoole_websocket_frame $frame)
101 | {
102 | echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
103 | $server->push($frame->fd, "this is server");
104 | }
105 |
106 | public function close($ser, $fd)
107 | {
108 | echo "client {$fd} closed\n";
109 | }
110 |
111 | }
112 |
113 | 然后进入bin目录
114 |
115 | php ws start //启动
116 | php ws stop //停止
117 |
118 | websocket相关配置在conf/bin/ws.php内
119 |
120 | 之后客户端发起 ws://127.0.0.1:9510/chat 连接将会触发注册的websocket路由
121 |
122 | ```
123 |
124 | ## **PhpRpc服务端启动(常驻内存模式)**
125 |
126 | ```php
127 |
128 | php phprpc start //启动
129 | php phprpc stop //停止
130 |
131 | _
132 | ___ | | ___ ___ ___ ___
133 | / _ \| |_ / _ \ / _ \ / _ \ / __ \
134 | | |_| || _ \ | |_| | | |_| | | |_| | | |
135 | | .___/| | | || .___/ | .\ \. | .___/ \ .__
136 | | | | | | || | | | \ \| | \___/
137 |
138 | [2018-06-01 15:43:12] Server Name: phprpc
139 | [2018-06-01 15:43:12] PHP Version: 7.1.7
140 | [2018-06-01 15:43:12] Swoole Version: 2.1.3
141 | [2018-06-01 15:43:12] Listen Address: 127.0.0.1
142 | [2018-06-01 15:43:12] Listen Port: 9518
143 |
144 | ```
145 |
146 | ## **PhpRpc注册中心启动(常驻内存模式)**
147 |
148 | ```php
149 |
150 | php phprpc_center start //启动
151 | php phprpc_center stop //停止
152 |
153 | _
154 | ___ | | ___ ___ ___ ___
155 | / _ \| |_ / _ \ / _ \ / _ \ / __ \
156 | | |_| || _ \ | |_| | | |_| | | |_| | | |
157 | | .___/| | | || .___/ | .\ \. | .___/ \ .__
158 | | | | | | || | | | \ \| | \___/
159 |
160 | [2018-06-01 15:43:12] Server Name: phprpc-center
161 | [2018-06-01 15:43:12] PHP Version: 7.1.7
162 | [2018-06-01 15:43:12] Swoole Version: 2.1.3
163 | [2018-06-01 15:43:12] Listen Address: 127.0.0.1
164 | [2018-06-01 15:43:12] Listen Port: 9520
165 |
166 | ```
167 |
168 | ## **使用交流**
169 | linkphp开发动态:www.linkphp.cn
170 |
171 |
172 | ###目前框架空目录都是必须创建的目录根据命名规范即可自动寻址加载相关文件
173 |
174 | ## **部署条件**
175 | 1、PHP版本不能小于5.5版本建议7.0版本(框架作者可能会发疯强制升级到php7)
176 |
177 | ## **支持的服务器和数据库环境**
178 |
179 | 支持Windows/Unix服务器环境
180 | 可运行于包括Apache、IIS和nginx在内的多种WEB服务器和模式
181 | 框架默认只支持Mysql数据库后期可扩展,需安装相关Pdo扩展
182 |
183 | ## **支持composer**
184 |
185 | 请确保服务器环境支持composer
186 |
187 | 在linkphp项目根目录执行 composer install命令,安装框架执行所需的所有依赖库
188 |
189 | ## **使用方法**
190 |
191 | #### 事件使用
192 |
193 | ```php
194 |
195 | use framework\Application;
196 |
197 | //接收两个参数,第一个参数为标签,第二个参数可以一组类的数组也可以为类名
198 |
199 | Application::event(
200 | 'test',
201 | [
202 | \app\controller\main\Event::class,
203 | \app\controller\main\Event::class,
204 | \app\controller\main\Event::class
205 | ]
206 | );
207 |
208 | //事件类必须实现EventServerProvider接口中update,该方法接收EventDefinition对象参数,在update方法最后将其赋值给的变量做返回操作
209 |
210 | use linkphp\event\EventDefinition;
211 | use linkphp\event\EventServerProvider;
212 |
213 | class Event implements EventServerProvider
214 | {
215 | public function update(EventDefinition $definition)
216 | {
217 | dump(2);
218 | return $definition;
219 | // TODO: Implement update() method.
220 | }
221 | }
222 |
223 | //事件触发
224 |
225 | Application::event('test');
226 |
227 | //在不给定第二个参数时则认定为触发操作
228 |
229 | //事件配置使用方法
230 |
231 | //在框架的configure目录下有个event.php事件配置文件
232 |
233 | return [
234 | //事件标签
235 | //'server' => [
236 | //执行事件类
237 | // '\app\controller\main\Event::class';
238 | //]
239 | // 'test' => [
240 | // '\app\controller\main\Event::class',
241 | // ]
242 | ];
243 |
244 | ```
245 |
246 | #### 数据库使用说明
247 |
248 | ```php
249 | use linkphp\db\Db;
250 | use framework\Application;
251 |
252 | //助手函数链式操作方法
253 | db()->table('')->where('')->select();
254 | db()->table('zq_user')->where('id=11')->delete();
255 | //占位操作
256 | db()->select('select * from test_table where id = ?',[1]);
257 |
258 | //Db类链式操作
259 | Db::table('')->field('')->where('')->select();
260 | Db::table('zq_user')->where('id=11')->delete();
261 | //占位操作
262 | Db::select('select * from test_table where id = ?',[1]);
263 |
264 | //Application类操作
265 | Application::db()->table('')->where('')->select();
266 | Application::db()->table('zq_user')->where('id=11')->delete();
267 | //占位操作
268 | Application::db()->select('select * from test_table where id = ?',[1]);
269 |
270 | ```
271 |
272 | #### 自动加载使用说明
273 |
274 | ```php
275 |
276 | //类加载使用方法
277 |
278 | //configure目录下存在map.php配置文件
279 |
280 | return [
281 | //psr4命名空间注册
282 | 'autoload_namespace_psr4' => [
283 | 'app\\' => [
284 | ROOT_PATH . 'application'
285 | ],
286 | 'bootstrap\\' => [
287 | ROOT_PATH . 'bootstrap/bootstrap'
288 | ],
289 | 'linkphp\\' => [
290 | FRAMEWORK_PATH . 'linkphp'
291 | ],
292 | ],
293 | //psr0命名空间
294 | 'autoload_namespace_psr0' => [
295 | //'命名空间' => '映射路径地址'
296 | ],
297 | //指定自动加载机制排序
298 | 'autoload_namespace_file' => [
299 | //'文件名' => '映射路径地址'
300 | 'app_func' => LOAD_PATH . 'common.php',
301 | 'framework_func' => FRAMEWORK_PATH . 'helper.php'
302 | ],
303 | 'class_autoload_map' => [
304 | //'类名' => '类文件地址'
305 | ],
306 | ];
307 |
308 | //建议使用psr4标准注册自己的相关命名空间
309 |
310 | //如需指定加载相关文件将其放入 autoload_namespace_file下,指定到具体的文件名,框架启动便会扫描加载进框架内
311 |
312 | ```
313 |
314 | #### restful使用说明
315 |
316 | ```php
317 | use framework\Application;
318 |
319 | //使用linkphp开发api应用
320 |
321 | //目前框架支持3种格式输出,默认输出方式为json,其余为xml、以及view
322 |
323 | //需要输出相关格式内容只需要在configure.php配置文件中进行配置
324 |
325 | //然后在控制器中方法下使用
326 |
327 | return ['test' => 'test'];
328 |
329 | //将数组进行返回,框架的response类会根据配置的信息进行相应的格式转换进行返回给请求者
330 |
331 | //判断当前请求方式可使用框架封装的
332 |
333 | Application::httpRequest()->isGet();
334 |
335 | request()->isGet();
336 |
337 | //支持一下方式判断
338 |
339 | request()->isGet();
340 | request()->isPost();
341 | request()->isDelete();
342 | request()->isPut();
343 | request()->isHead();
344 | request()->isOptions();
345 | request()->isPatch();
346 |
347 | ```
348 |
349 | #### 容器使用说明
350 |
351 | ```php
352 |
353 | //依赖注入实现
354 |
355 | //controller 层构造方法注入
356 |
357 | namespace app\controller\main;
358 |
359 | use linkphp\http\HttpRequest;
360 | use framework\Application;
361 |
362 | class Home
363 | {
364 | public function __construct(HttpRequest $httpRequest)
365 | {
366 | dump($httpRequest);
367 | }
368 | }
369 |
370 | //通过浏览器请求到该控制器会将HttpRequest自动注入进Home控制器中
371 |
372 | //自行手动注入 闭包注入实现
373 | Application::singleton(
374 | 'envmodel',
375 | function(){
376 | //自行操作最后返回一个实例对象
377 | return Application::get('test');
378 | });
379 |
380 | //自行手动注入 类名注入
381 | Application::singletonEager(
382 | 'run',
383 | 'linkphp\console\Command'
384 | );
385 |
386 | //获取类实例
387 | Application::get('test');
388 |
389 | //通过类名获取时,如果在容器内未找到实例会执行自动实例操作并返回,自动实例也会触发自动注入,如果实例对象存在依赖类会自动进行注入
390 | Application::get('linkphp\console\Command');
391 |
392 |
393 | Application::bind(
394 | Application::definition()
395 | ->setAlias('test')
396 | ->setIsEager(true)
397 | ->setIsSingleton(true)
398 | ->setClassName('classname')
399 | );
400 |
401 | Application::bind(
402 | Application::definition()
403 | ->setAlias('test')
404 | ->setIsEager(true)
405 | ->setIsSingleton(true)
406 | ->setCallBack('callback')
407 | );
408 |
409 | ```
410 |
411 | #### 缓存使用说明
412 |
413 | ```php
414 |
415 | use framework\Application;
416 |
417 | //获取缓存
418 | cache('test');
419 | Application::cache('test');
420 |
421 | //写入缓存
422 | cache('test','test');
423 | Application::cache('test','test');
424 |
425 | ```
426 |
427 | #### 参数接收使用方法
428 |
429 | ```php
430 |
431 |
432 | use framework\Application;
433 |
434 | //input参数接收操作
435 |
436 | Application::input();
437 |
438 | Application::input('get.');
439 |
440 | Application::input('get.test');
441 |
442 | Application::input('get.in',function($value){
443 | //闭包实现
444 | //这里写具体的过滤方法
445 | //自定义
446 | //记得返回处理好的
447 | return $value;
448 | });
449 |
450 | //第一个参数为接收一个get请求参数值,第二个参数为过滤获取值,可接受一个闭包函数,自定义闭包方法,闭包函数接收一个原始get值,在其里面进行自定义过滤
451 | //最后必须将值进行返回,执行框架默认的过滤函数
452 |
453 | //助手函数使用
454 |
455 | input();
456 |
457 | input('test');
458 |
459 | input('get.');
460 |
461 | input('get.test',function($value){
462 | //闭包实现
463 | //这里写具体的过滤方法
464 | //自定义
465 | //记得返回处理好的
466 | return $value;
467 | });
468 |
469 | request()->input('get.');
470 |
471 | request()->input('get.',function($value){
472 | //闭包实现
473 | //这里写具体的过滤方法
474 | //自定义
475 | //记得返回处理好的
476 | return $value;
477 | });
478 |
479 | ```
480 |
481 | #### 中间件使用说明
482 |
483 | ```php
484 |
485 | use framework\Application;
486 | //中间件使用
487 |
488 | //框架中实现了6个中间件
489 |
490 | //configure目录下middleware.php中间件配置文件中
491 |
492 | return [
493 |
494 | 'beginMiddleware' => [
495 | \app\controller\main\Index::class,
496 | \app\controller\main\Test::class,
497 | \app\controller\main\First::class,
498 | ],
499 |
500 | 'appMiddleware' => [
501 | \app\controller\main\Index::class,
502 | ],
503 |
504 | 'modelMiddleware' => [
505 | \app\controller\main\Test::class,
506 | ],
507 |
508 | 'controllerMiddleware' => [
509 | \app\controller\main\Test::class,
510 | ],
511 |
512 | 'actionMiddleware' => [
513 | \app\controller\main\Test::class,
514 | ],
515 |
516 | 'destructMiddleware' => [
517 | \app\controller\main\Test::class,
518 | ],
519 |
520 | ];
521 |
522 | //分别为 框架启动中间件、应用启动中间件、模块初始化中间件、控制器初始化中间件、方法调用中间件以及框架销毁前中间件
523 |
524 | //使用中间件的类必须实现handle方法,接收一个闭包参数最后都必须把闭包赋值的变量做返回操作
525 |
526 | use Closure;
527 |
528 | class Index
529 | {
530 | public function handle(Closure $next)
531 | {
532 | dump('middleware index');
533 | return $next;
534 | }
535 | }
536 |
537 | //闭包使用方法
538 |
539 | Application::middleware('beginMiddleware',function (Closure $v) {
540 | $v();
541 | echo 3;
542 | return $v;
543 | });
544 |
545 | ```
546 |
547 | #### 路由使用说明
548 |
549 | ```php
550 |
551 | use framework\Application;
552 | //路由使用
553 |
554 | //在src目录下route.php路由配置文件中进行配置使用
555 |
556 | //Router::get(':id/:test', '/addons/test/Test@main');
557 | Router::get('/', '/http/home/main');
558 |
559 | return [
560 | // ':id/:test' => ['/main/home/main',['method' => 'get']],
561 | ];
562 |
563 | //键名为当前请求的路径
564 | //键值接收字符串或者闭包函数
565 |
566 |
567 | //闭包使用方法
568 |
569 | use linkphp\http\HttpRequest;
570 |
571 | Router::get(':id/:test', function(HttpRequest $httpRequest,$id){
572 | dump($id);
573 | dump($httpRequest);
574 | return '闭包路由';
575 | });
576 |
577 | ```
578 |
579 | #### 视图使用说明
580 |
581 | ```php
582 |
583 | use framework\Application;
584 | //view层使用
585 |
586 | Application::view('main/home/main',[
587 | 'linkphp' => 'linkphp'
588 | ]);
589 |
590 | //助手函数使用方法
591 |
592 | //加载页面
593 | view('main/home/main');
594 |
595 | //加载页面并传值
596 | view('main/home/main',['linkphp' => 'linkphp']);
597 |
598 | ```
599 |
600 | #### 验证器使用
601 |
602 | ```php
603 |
604 | Validator::data('w')
605 | ->withValidator('url', function ($validator, $input){
606 | $validator->addValidator($input,['rule' => [
607 | 'class' => 'url', 'param' => []
608 | ], 'errorMessage' => '非法URL地址'
609 | ]);
610 | });
611 | if(!Validator::check()){
612 | dump(Validator::geterror());die;
613 | }
614 |
615 | ```
616 |
617 | #### 分页器使用
618 |
619 | ```php
620 |
621 | use linkphp\page\Paginator;
622 |
623 | //查出待分页的总数
624 | $count = Db::table('lp_user')->count('id');
625 | //实例化分页器传入总数以及每页数量
626 | $page = new Paginator($count,2);
627 | //获取limit参数
628 | $data = Db::table('lp_user')->limit($page->limit())->select();
629 | //渲染分页条
630 | $page->render();
631 |
632 | ```
633 |
634 | #### 命令行使用说明
635 |
636 | ```php
637 |
638 | 首先请保证已经将执行目录切换到linkphp框架目录,默认执行
639 | php cli如果已经将cli文件更换为自定义名称则执行自定义的名称
640 |
641 | php cli +命令名
642 |
643 | 系统内置了些许方法可参考手册查找,如果需要自定义命令名则需要做一下几步:
644 |
645 | 1、在configure目录中打开command.php文件,添加命令类
646 | 2、在新增的命令类中按照系统给定的方式进行创建类文件
647 | (假如自定义命令类为 app\command\main\Tset)
648 |
649 | namespace app\command\main;
650 |
651 | use framework\Application;
652 | use linkphp\console\Command;
653 |
654 | class Test extends Command
655 | {
656 |
657 | public function configure()
658 | {
659 | $this->setAlias('test')->setDescription('test');
660 | }
661 |
662 | public function execute()
663 | {
664 | Application::get('linkphp\console\command\Output')->writeln('this is test');
665 | }
666 |
667 | //如果需要在该命令中添加更多方法则需要集成该方法
668 | public function commandHandle(){}
669 | }
670 |
671 | ```
672 |
--------------------------------------------------------------------------------
/src/runtime/log/2018-06-07.log:
--------------------------------------------------------------------------------
1 | [2018-06-07T10:10:34+00:00]
2 | run Fatal Error:
3 | message: Uncaught Exception: 无法加载模块 in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php:30
4 | Stack trace:
5 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Router.php(138): linkphp\router\Dispatch->dispatch(Object(linkphp\router\Router))
6 | #1 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(79): linkphp\router\Router->dispatch()
7 | #2 [internal function]: linkphp\swoole\http\HttpdServer->linkphp\swoole\http\{closure}()
8 | #3 /Users/liujun/workspace/php/linkphp/vendor/linkphp/framework/src/linkphp/Kernel.php(32): call_user_func(Object(Closure))
9 | #4 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(85): linkphp\Kernel->then(Object(Closure))
10 | #5 {main}
11 | thrown
12 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
13 | line: 30
14 |
15 | [2018-06-07T10:19:26+00:00]
16 | run Fatal Error:
17 | message: Uncaught Exception: 无法加载模块 in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php:31
18 | Stack trace:
19 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Router.php(138): linkphp\router\Dispatch->dispatch(Object(linkphp\router\Router))
20 | #1 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(79): linkphp\router\Router->dispatch()
21 | #2 [internal function]: linkphp\swoole\http\HttpdServer->linkphp\swoole\http\{closure}()
22 | #3 /Users/liujun/workspace/php/linkphp/vendor/linkphp/framework/src/linkphp/Kernel.php(32): call_user_func(Object(Closure))
23 | #4 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(85): linkphp\Kernel->then(Object(Closure))
24 | #5 {main}
25 | thrown
26 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
27 | line: 31
28 |
29 | [2018-06-07T10:20:52+00:00]
30 | run Fatal Error:
31 | message: Uncaught Exception: 无法加载模块 in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php:31
32 | Stack trace:
33 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Router.php(138): linkphp\router\Dispatch->dispatch(Object(linkphp\router\Router))
34 | #1 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(79): linkphp\router\Router->dispatch()
35 | #2 [internal function]: linkphp\swoole\http\HttpdServer->linkphp\swoole\http\{closure}()
36 | #3 /Users/liujun/workspace/php/linkphp/vendor/linkphp/framework/src/linkphp/Kernel.php(32): call_user_func(Object(Closure))
37 | #4 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(85): linkphp\Kernel->then(Object(Closure))
38 | #5 {main}
39 | thrown
40 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
41 | line: 31
42 |
43 | [2018-06-07T10:22:52+00:00]
44 | run Fatal Error:
45 | message: Uncaught Exception: 无法加载模块 in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php:31
46 | Stack trace:
47 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Router.php(138): linkphp\router\Dispatch->dispatch(Object(linkphp\router\Router))
48 | #1 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(79): linkphp\router\Router->dispatch()
49 | #2 [internal function]: linkphp\swoole\http\HttpdServer->linkphp\swoole\http\{closure}()
50 | #3 /Users/liujun/workspace/php/linkphp/vendor/linkphp/framework/src/linkphp/Kernel.php(32): call_user_func(Object(Closure))
51 | #4 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(85): linkphp\Kernel->then(Object(Closure))
52 | #5 {main}
53 | thrown
54 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
55 | line: 31
56 |
57 | [2018-06-07T10:23:39+00:00]
58 | run Fatal Error:
59 | message: Uncaught Exception: 无法加载模块 in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php:31
60 | Stack trace:
61 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Router.php(138): linkphp\router\Dispatch->dispatch(Object(linkphp\router\Router))
62 | #1 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(79): linkphp\router\Router->dispatch()
63 | #2 [internal function]: linkphp\swoole\http\HttpdServer->linkphp\swoole\http\{closure}()
64 | #3 /Users/liujun/workspace/php/linkphp/vendor/linkphp/framework/src/linkphp/Kernel.php(32): call_user_func(Object(Closure))
65 | #4 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(85): linkphp\Kernel->then(Object(Closure))
66 | #5 {main}
67 | thrown
68 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
69 | line: 31
70 |
71 | [2018-06-07T10:24:20+00:00]
72 | run Fatal Error:
73 | message: Uncaught Exception: 无法加载模块 in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php:31
74 | Stack trace:
75 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Router.php(138): linkphp\router\Dispatch->dispatch(Object(linkphp\router\Router))
76 | #1 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(79): linkphp\router\Router->dispatch()
77 | #2 [internal function]: linkphp\swoole\http\HttpdServer->linkphp\swoole\http\{closure}()
78 | #3 /Users/liujun/workspace/php/linkphp/vendor/linkphp/framework/src/linkphp/Kernel.php(32): call_user_func(Object(Closure))
79 | #4 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(85): linkphp\Kernel->then(Object(Closure))
80 | #5 {main}
81 | thrown
82 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
83 | line: 31
84 |
85 | [2018-06-07T11:02:23+00:00]
86 | run Fatal Error:
87 | message: Uncaught Exception: 无法加载模块 in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php:31
88 | Stack trace:
89 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Router.php(138): linkphp\router\Dispatch->dispatch(Object(linkphp\router\Router))
90 | #1 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(79): linkphp\router\Router->dispatch()
91 | #2 [internal function]: linkphp\swoole\http\HttpdServer->linkphp\swoole\http\{closure}()
92 | #3 /Users/liujun/workspace/php/linkphp/vendor/linkphp/framework/src/linkphp/Kernel.php(32): call_user_func(Object(Closure))
93 | #4 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(85): linkphp\Kernel->then(Object(Closure))
94 | #5 {main}
95 | thrown
96 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
97 | line: 31
98 |
99 | [2018-06-07T11:07:36+00:00]
100 | run Fatal Error:
101 | message: Uncaught Exception: 无法加载模块 in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php:31
102 | Stack trace:
103 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Router.php(138): linkphp\router\Dispatch->dispatch(Object(linkphp\router\Router))
104 | #1 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(79): linkphp\router\Router->dispatch()
105 | #2 [internal function]: linkphp\swoole\http\HttpdServer->linkphp\swoole\http\{closure}()
106 | #3 /Users/liujun/workspace/php/linkphp/vendor/linkphp/framework/src/linkphp/Kernel.php(32): call_user_func(Object(Closure))
107 | #4 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(85): linkphp\Kernel->then(Object(Closure))
108 | #5 {main}
109 | thrown
110 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
111 | line: 31
112 |
113 | [2018-06-07T11:08:09+00:00]
114 | run NOTICE:
115 | message: Undefined index: default_theme_suffix
116 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/config/src/Config.php
117 | line: 127
118 |
119 | [2018-06-07T11:08:09+00:00]
120 | run WARNING:
121 | message: file_get_contents(/Users/liujun/workspace/php/linkphp/src/resource/view/main/home/main): failed to open stream: No such file or directory
122 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/template/src/view/engine/Link.php
123 | line: 49
124 |
125 | [2018-06-07T11:08:09+00:00]
126 | run NOTICE:
127 | message: Undefined index: set_left_limiter
128 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/config/src/Config.php
129 | line: 127
130 |
131 | [2018-06-07T11:08:09+00:00]
132 | run NOTICE:
133 | message: Undefined index: set_right_limiter
134 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/config/src/Config.php
135 | line: 127
136 |
137 | [2018-06-07T11:08:09+00:00]
138 | run Fatal Error:
139 | message: Uncaught Exception: 无法加载模块 in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php:31
140 | Stack trace:
141 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Router.php(138): linkphp\router\Dispatch->dispatch(Object(linkphp\router\Router))
142 | #1 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(79): linkphp\router\Router->dispatch()
143 | #2 [internal function]: linkphp\swoole\http\HttpdServer->linkphp\swoole\http\{closure}()
144 | #3 /Users/liujun/workspace/php/linkphp/vendor/linkphp/framework/src/linkphp/Kernel.php(32): call_user_func(Object(Closure))
145 | #4 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(85): linkphp\Kernel->then(Object(Closure))
146 | #5 {main}
147 | thrown
148 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
149 | line: 31
150 |
151 | [2018-06-07T11:08:17+00:00]
152 | run NOTICE:
153 | message: Undefined index: default_theme_suffix
154 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/config/src/Config.php
155 | line: 127
156 |
157 | [2018-06-07T11:08:17+00:00]
158 | run WARNING:
159 | message: file_get_contents(/Users/liujun/workspace/php/linkphp/src/resource/view/main/home/main): failed to open stream: No such file or directory
160 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/template/src/view/engine/Link.php
161 | line: 49
162 |
163 | [2018-06-07T11:08:17+00:00]
164 | run NOTICE:
165 | message: Undefined index: set_left_limiter
166 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/config/src/Config.php
167 | line: 127
168 |
169 | [2018-06-07T11:08:17+00:00]
170 | run NOTICE:
171 | message: Undefined index: set_right_limiter
172 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/config/src/Config.php
173 | line: 127
174 |
175 | [2018-06-07T11:08:17+00:00]
176 | run Fatal Error:
177 | message: Uncaught Exception: 无法加载模块 in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php:31
178 | Stack trace:
179 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Router.php(138): linkphp\router\Dispatch->dispatch(Object(linkphp\router\Router))
180 | #1 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(79): linkphp\router\Router->dispatch()
181 | #2 [internal function]: linkphp\swoole\http\HttpdServer->linkphp\swoole\http\{closure}()
182 | #3 /Users/liujun/workspace/php/linkphp/vendor/linkphp/framework/src/linkphp/Kernel.php(32): call_user_func(Object(Closure))
183 | #4 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(85): linkphp\Kernel->then(Object(Closure))
184 | #5 {main}
185 | thrown
186 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
187 | line: 31
188 |
189 | [2018-06-07T11:10:21+00:00]
190 | run Fatal Error:
191 | message: Uncaught Exception: 无法加载模块 in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php:31
192 | Stack trace:
193 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Router.php(138): linkphp\router\Dispatch->dispatch(Object(linkphp\router\Router))
194 | #1 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(79): linkphp\router\Router->dispatch()
195 | #2 [internal function]: linkphp\swoole\http\HttpdServer->linkphp\swoole\http\{closure}()
196 | #3 /Users/liujun/workspace/php/linkphp/vendor/linkphp/framework/src/linkphp/Kernel.php(32): call_user_func(Object(Closure))
197 | #4 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(85): linkphp\Kernel->then(Object(Closure))
198 | #5 {main}
199 | thrown
200 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
201 | line: 31
202 |
203 | [2018-06-07T11:10:56+00:00]
204 | run Fatal Error:
205 | message: Uncaught Exception: 无法加载模块 in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php:31
206 | Stack trace:
207 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Router.php(138): linkphp\router\Dispatch->dispatch(Object(linkphp\router\Router))
208 | #1 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(79): linkphp\router\Router->dispatch()
209 | #2 [internal function]: linkphp\swoole\http\HttpdServer->linkphp\swoole\http\{closure}()
210 | #3 /Users/liujun/workspace/php/linkphp/vendor/linkphp/framework/src/linkphp/Kernel.php(32): call_user_func(Object(Closure))
211 | #4 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php(85): linkphp\Kernel->then(Object(Closure))
212 | #5 {main}
213 | thrown
214 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Dispatch.php
215 | line: 31
216 |
217 | [2018-06-07T11:22:44+00:00]
218 | run NOTICE:
219 | message: Undefined index: query_uri
220 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
221 | line: 61
222 |
223 | [2018-06-07T11:22:44+00:00]
224 | run NOTICE:
225 | message: Undefined index: query_uri
226 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
227 | line: 61
228 |
229 | [2018-06-07T11:24:51+00:00]
230 | run NOTICE:
231 | message: Undefined index: query_uri
232 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
233 | line: 61
234 |
235 | [2018-06-07T11:24:51+00:00]
236 | run NOTICE:
237 | message: Undefined index: query_uri
238 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
239 | line: 61
240 |
241 | [2018-06-07T11:25:28+00:00]
242 | run NOTICE:
243 | message: Undefined index: query_uri
244 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
245 | line: 48
246 |
247 | [2018-06-07T11:25:28+00:00]
248 | run NOTICE:
249 | message: Undefined index: query_uri
250 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
251 | line: 62
252 |
253 | [2018-06-07T11:25:28+00:00]
254 | run NOTICE:
255 | message: Undefined index: query_uri
256 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
257 | line: 48
258 |
259 | [2018-06-07T11:25:28+00:00]
260 | run NOTICE:
261 | message: Undefined index: query_uri
262 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
263 | line: 62
264 |
265 | [2018-06-07T11:26:10+00:00]
266 | run NOTICE:
267 | message: Undefined index: query_uri
268 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
269 | line: 62
270 |
271 | [2018-06-07T11:26:10+00:00]
272 | run NOTICE:
273 | message: Undefined index: query_uri
274 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
275 | line: 62
276 |
277 | [2018-06-07T11:30:00+00:00]
278 | run WARNING:
279 | message: Swoole\Http\Response::status(): Http request is finished.
280 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
281 | line: 87
282 |
283 | [2018-06-07T11:30:00+00:00]
284 | run WARNING:
285 | message: Swoole\Http\Response::end(): Http request is finished.
286 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
287 | line: 88
288 |
289 | [2018-06-07T11:35:58+00:00]
290 | run WARNING:
291 | message: Swoole\Http\Response::status(): Http request is finished.
292 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
293 | line: 83
294 |
295 | [2018-06-07T11:35:58+00:00]
296 | run WARNING:
297 | message: Swoole\Http\Response::end(): Http request is finished.
298 | file: /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/http/HttpdServer.php
299 | line: 84
300 |
301 | [2018-06-07T11:49:45+00:00]
302 | run NOTICE:
303 | message: Use of undefined constant d - assumed 'd'
304 | file: /Users/liujun/workspace/php/linkphp/src/application/controller/main/Home.php
305 | line: 23
306 |
307 | [2018-06-07T11:51:39+00:00]
308 | run NOTICE:
309 | message: Use of undefined constant d - assumed 'd'
310 | file: /Users/liujun/workspace/php/linkphp/src/application/controller/main/Home.php
311 | line: 23
312 |
313 | [2018-06-07T11:52:21+00:00]
314 | run NOTICE:
315 | message: Use of undefined constant d - assumed 'd'
316 | file: /Users/liujun/workspace/php/linkphp/src/application/controller/main/Home.php
317 | line: 23
318 |
319 | [2018-06-07T11:53:42+00:00]
320 | run NOTICE:
321 | message: Use of undefined constant d - assumed 'd'
322 | file: /Users/liujun/workspace/php/linkphp/src/application/controller/main/Home.php
323 | line: 23
324 |
325 |
--------------------------------------------------------------------------------
/src/runtime/log/ws.log:
--------------------------------------------------------------------------------
1 | [2018-06-24 18:49:11 *57831.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
2 | [2018-06-24 18:50:12 #57829.1] NOTICE Server is shutdown now.
3 | [2018-06-24 18:50:24 *57847.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
4 | [2018-06-24 18:50:41 #57845.1] NOTICE Server is shutdown now.
5 | [2018-06-24 18:54:12 *57870.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
6 | [2018-06-24 18:54:22 #57868.1] NOTICE Server is shutdown now.
7 | [2018-06-24 18:54:45 *57887.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
8 | [2018-06-24 18:55:22 #57885.1] NOTICE Server is shutdown now.
9 | [2018-06-24 18:55:27 *57900.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
10 | [2018-06-24 18:59:24 #57898.1] NOTICE Server is shutdown now.
11 | [2018-06-24 18:59:27 *57914.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
12 | [2018-06-24 19:00:19 #57912.1] NOTICE Server is shutdown now.
13 | [2018-06-24 19:00:26 *57930.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught TypeError: Argument 2 passed to linkphp\router\Parser::match() must be of the type array, null given, called in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Parser.php on line 166 and defined in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Parser.php:26
14 | Stack trace:
15 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Parser.php(166): linkphp\router\Parser->match('chat', NULL, Array)
16 | #1 /Users/liujun/works
17 | [2018-06-24 19:00:26 $57929.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
18 | [2018-06-24 19:01:09 #57928.1] NOTICE Server is shutdown now.
19 | [2018-06-24 19:01:13 *57942.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught TypeError: Argument 2 passed to linkphp\router\Parser::match() must be of the type array, null given, called in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Parser.php on line 166 and defined in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Parser.php:26
20 | Stack trace:
21 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Parser.php(166): linkphp\router\Parser->match('chat', NULL, Array)
22 | #1 /Users/liujun/works
23 | [2018-06-24 19:01:13 $57941.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
24 | [2018-06-24 19:02:01 #57940.1] NOTICE Server is shutdown now.
25 | [2018-06-24 19:02:16 *57954.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught TypeError: Argument 2 passed to linkphp\router\Parser::match() must be of the type array, null given, called in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Parser.php on line 167 and defined in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Parser.php:26
26 | Stack trace:
27 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Parser.php(167): linkphp\router\Parser->match('chat', NULL, Array)
28 | #1 /Users/liujun/works
29 | [2018-06-24 19:02:16 $57953.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
30 | [2018-06-24 19:02:32 #57952.1] NOTICE Server is shutdown now.
31 | [2018-06-24 19:05:20 *57978.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
32 | [2018-06-24 19:06:41 #57976.1] NOTICE Server is shutdown now.
33 | [2018-06-24 19:06:47 *57991.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught TypeError: Argument 2 passed to linkphp\router\Parser::match() must be of the type array, null given, called in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Parser.php on line 166 and defined in /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Parser.php:26
34 | Stack trace:
35 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Parser.php(166): linkphp\router\Parser->match('chat', NULL, Array)
36 | #1 /Users/liujun/works
37 | [2018-06-24 19:06:47 $57990.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
38 | [2018-06-24 19:10:45 #57989.1] NOTICE Server is shutdown now.
39 | [2018-06-24 19:10:50 *58007.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
40 | [2018-06-24 19:12:43 #58004.1] NOTICE Server is shutdown now.
41 | [2018-06-24 19:12:47 *58026.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
42 | [2018-06-24 19:13:22 #58024.1] NOTICE Server is shutdown now.
43 | [2018-06-24 19:13:26 *58038.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
44 | [2018-06-24 19:14:06 #58036.1] NOTICE Server is shutdown now.
45 | [2018-06-24 19:14:11 *58053.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
46 | [2018-06-24 19:14:51 #58051.1] NOTICE Server is shutdown now.
47 | [2018-06-24 19:14:54 *58063.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
48 | [2018-06-24 19:15:09 #58061.1] NOTICE Server is shutdown now.
49 | [2018-06-24 19:15:13 *58075.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
50 | [2018-06-24 19:16:16 #58073.1] NOTICE Server is shutdown now.
51 | [2018-06-24 19:16:20 *58088.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
52 | [2018-06-24 19:16:29 #58086.1] NOTICE Server is shutdown now.
53 | [2018-06-24 19:21:04 *58102.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
54 | [2018-06-24 19:21:45 #58100.1] NOTICE Server is shutdown now.
55 | [2018-06-24 19:21:50 *58115.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
56 | [2018-06-24 19:21:57 #58113.1] NOTICE Server is shutdown now.
57 | [2018-06-24 20:01:43 #58164.1] NOTICE Server is shutdown now.
58 | [2018-06-24 20:02:23 #58177.1] NOTICE Server is shutdown now.
59 | [2018-06-24 20:02:35 #58186.1] NOTICE Server is shutdown now.
60 | [2018-06-24 20:06:22 #58199.1] NOTICE Server is shutdown now.
61 | [2018-06-24 20:36:23 #58220.1] NOTICE Server is shutdown now.
62 | [2018-06-24 20:40:55 #58273.1] NOTICE Server is shutdown now.
63 | [2018-06-24 20:44:54 #58289.1] NOTICE Server is shutdown now.
64 | [2018-06-24 20:50:17 *58311.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Call to a member function open() on null in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:52
65 | Stack trace:
66 | #0 {main}
67 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 52.
68 | [2018-06-24 20:50:17 $58310.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
69 | [2018-06-24 20:50:17 *58312.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Call to a member function message() on null in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:60
70 | Stack trace:
71 | #0 {main}
72 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 60.
73 | [2018-06-24 20:50:17 $58310.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
74 | [2018-06-24 20:50:20 *58313.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Call to a member function message() on null in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:60
75 | Stack trace:
76 | #0 {main}
77 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 60.
78 | [2018-06-24 20:50:20 $58310.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
79 | [2018-06-24 20:50:21 *58314.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Call to a member function message() on null in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:60
80 | Stack trace:
81 | #0 {main}
82 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 60.
83 | [2018-06-24 20:50:21 $58310.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
84 | [2018-06-24 20:50:25 #58309.1] NOTICE Server is shutdown now.
85 | [2018-06-24 20:51:01 #58325.1] NOTICE Server is shutdown now.
86 | [2018-06-24 20:54:57 #58339.1] NOTICE Server is shutdown now.
87 | [2018-06-24 20:57:29 #58353.1] NOTICE Server is shutdown now.
88 | [2018-06-24 21:57:10 #58423.1] NOTICE Server is shutdown now.
89 | [2018-06-24 21:58:14 #58437.1] NOTICE Server is shutdown now.
90 | [2018-06-24 21:58:26 #58451.1] NOTICE Server is shutdown now.
91 | [2018-06-24 22:00:31 *58478.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Call to a member function HandShake() on null in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:27
92 | Stack trace:
93 | #0 {main}
94 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 27.
95 | [2018-06-24 22:00:31 $58477.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
96 | [2018-06-24 22:00:55 #58476.1] NOTICE Server is shutdown now.
97 | [2018-06-24 22:01:56 #58489.1] NOTICE Server is shutdown now.
98 | [2018-06-24 22:06:34 #58509.1] NOTICE Server is shutdown now.
99 | [2018-06-24 22:06:39 *58531.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Call to a member function message() on null in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:94
100 | Stack trace:
101 | #0 {main}
102 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 94.
103 | [2018-06-24 22:06:39 $58529.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
104 | [2018-06-24 22:09:02 #58528.1] NOTICE Server is shutdown now.
105 | [2018-06-24 22:09:08 *58546.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
106 | [2018-06-24 22:09:16 #58543.1] NOTICE Server is shutdown now.
107 | [2018-06-24 22:18:59 *58578.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Call to a member function message() on null in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:95
108 | Stack trace:
109 | #0 {main}
110 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 95.
111 | [2018-06-24 22:18:59 $58576.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
112 | [2018-06-24 22:19:15 #58575.1] NOTICE Server is shutdown now.
113 | [2018-06-24 22:19:30 *58592.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
114 | [2018-06-24 22:20:14 #58589.1] NOTICE Server is shutdown now.
115 | [2018-06-24 22:20:20 *58606.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
116 | [2018-06-24 22:21:59 #58603.1] NOTICE Server is shutdown now.
117 | [2018-06-24 22:22:03 *58620.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Call to a member function HandShake() on null in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:93
118 | Stack trace:
119 | #0 {main}
120 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 93.
121 | [2018-06-24 22:22:03 $58619.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
122 | [2018-06-24 22:32:02 #58618.1] NOTICE Server is shutdown now.
123 | [2018-06-24 22:34:41 *58661.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
124 | [2018-06-24 22:36:51 #58658.1] NOTICE Server is shutdown now.
125 | [2018-06-24 22:36:57 *58681.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
126 | [2018-06-24 22:37:46 #58678.1] NOTICE Server is shutdown now.
127 | [2018-06-24 22:37:50 *58695.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
128 | [2018-06-24 22:39:47 #58692.1] NOTICE Server is shutdown now.
129 | [2018-06-24 22:39:55 *58711.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
130 | [2018-06-24 22:47:16 #58708.1] NOTICE Server is shutdown now.
131 | [2018-06-24 22:47:23 *58745.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
132 | [2018-06-24 22:47:32 #58742.1] NOTICE Server is shutdown now.
133 | [2018-06-24 22:49:01 *58770.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
134 | [2018-06-24 22:49:06 #58767.1] NOTICE Server is shutdown now.
135 | [2018-06-24 22:51:08 *58789.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught TypeError: Argument 1 passed to linkphp\swoole\websocket\WebSocketServer::linkphp\swoole\websocket\{closure}() must be an instance of Swoole\Http\Request, instance of Swoole\WebSocket\Server given in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:92
136 | Stack trace:
137 | #0 {main}
138 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 92.
139 | [2018-06-24 22:51:08 $58787.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
140 | [2018-06-24 22:52:10 #58786.1] NOTICE Server is shutdown now.
141 | [2018-06-24 22:52:14 *58805.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught ArgumentCountError: Too few arguments to function linkphp\swoole\websocket\WebSocketServer::linkphp\swoole\websocket\{closure}(), 2 passed and exactly 3 expected in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:92
142 | Stack trace:
143 | #0 {main}
144 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 92.
145 | [2018-06-24 22:52:14 $58803.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
146 | [2018-06-24 22:52:22 #58802.1] NOTICE Server is shutdown now.
147 | [2018-06-24 22:54:04 *58837.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
148 | [2018-06-25 15:12:16 #58834.1] NOTICE Server is shutdown now.
149 | [2018-06-25 15:12:27 *59541.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Call to a member function message() on null in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:94
150 | Stack trace:
151 | #0 {main}
152 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 94.
153 | [2018-06-25 15:12:27 $59539.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
154 | [2018-06-25 15:12:45 #59538.1] NOTICE Server is shutdown now.
155 | [2018-06-25 15:13:42 *59557.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
156 | [2018-06-25 15:13:57 #59554.1] NOTICE Server is shutdown now.
157 | [2018-06-25 15:55:33 *59649.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
158 | [2018-06-25 15:56:00 #59647.1] NOTICE Server is shutdown now.
159 | [2018-06-25 15:56:06 *59663.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
160 | [2018-06-25 16:20:19 #59660.1] NOTICE Server is shutdown now.
161 | [2018-06-25 16:22:49 *59734.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
162 | [2018-06-25 16:23:16 #59731.1] NOTICE Server is shutdown now.
163 | [2018-06-25 16:28:57 $59777.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=0, signal=11
164 | [2018-06-25 16:32:12 #59776.1] NOTICE Server is shutdown now.
165 | [2018-06-25 16:32:18 *59801.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Call to a member function HandShake() on boolean in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:73
166 | Stack trace:
167 | #0 {main}
168 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 73.
169 | [2018-06-25 16:32:18 $59800.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
170 | [2018-06-25 16:32:51 #59799.1] NOTICE Server is shutdown now.
171 | [2018-06-25 16:45:29 *59836.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
172 | [2018-06-25 16:49:27 #59833.1] NOTICE Server is shutdown now.
173 | [2018-06-25 16:49:34 *59857.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
174 | [2018-06-25 16:50:11 *59861.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
175 | [2018-06-25 16:51:50 #59854.1] NOTICE Server is shutdown now.
176 | [2018-06-25 16:57:44 #59874.1] NOTICE Server is shutdown now.
177 | [2018-06-25 16:57:54 *59910.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught TypeError: Argument 1 passed to app\ws\controller\Handle::HandShake() must be an instance of Swoole\Http\Request, instance of Swoole\WebSocket\Server given, called in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 94 and defined in /Users/liujun/workspace/php/linkphp/src/application/ws/controller/Handle.php:20
178 | Stack trace:
179 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/We
180 | [2018-06-25 16:57:54 $59909.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
181 | [2018-06-25 16:58:19 #59908.1] NOTICE Server is shutdown now.
182 | [2018-06-25 16:58:46 *59927.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
183 | [2018-06-25 16:58:54 #59924.1] NOTICE Server is shutdown now.
184 | [2018-06-25 16:59:16 *59942.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
185 | [2018-06-25 16:59:22 #59939.1] NOTICE Server is shutdown now.
186 | [2018-06-25 16:59:54 *59955.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
187 | [2018-06-25 16:59:59 #59952.1] NOTICE Server is shutdown now.
188 | [2018-06-25 17:18:56 *59994.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
189 | [2018-06-25 17:20:50 #59990.1] NOTICE Server is shutdown now.
190 | [2018-06-25 17:21:15 *60009.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
191 | [2018-06-25 17:22:05 #60006.1] NOTICE Server is shutdown now.
192 | [2018-06-25 17:22:14 *60022.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
193 | [2018-06-25 17:34:05 #60019.1] NOTICE Server is shutdown now.
194 | [2018-06-25 17:34:14 *60057.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Call to a member function rewind() on null in /Users/liujun/workspace/php/linkphp/vendor/linkphp/event/src/Event.php:69
195 | Stack trace:
196 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/framework/src/Application.php(245): linkphp\event\Event->target('routerMiddlewar...')
197 | #1 /Users/liujun/workspace/php/linkphp/vendor/linkphp/router/src/Parser.php(92): framework\Application::event('routerMiddlewar...')
198 | #2 /Users/liujun/workspace/php/linkphp/vend
199 | [2018-06-25 17:34:14 $60055.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
200 | [2018-06-25 17:34:34 #60054.1] NOTICE Server is shutdown now.
201 | [2018-06-25 23:30:33 #60069.1] NOTICE Server is shutdown now.
202 | [2018-06-25 23:30:52 *60367.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
203 | [2018-06-25 23:31:36 #60364.1] NOTICE Server is shutdown now.
204 | [2018-06-25 23:32:13 *60387.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
205 | [2018-06-25 23:32:33 #60384.1] NOTICE Server is shutdown now.
206 | [2018-06-25 23:32:39 *60403.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
207 | [2018-06-25 23:32:40 *60404.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
208 | [2018-06-25 23:32:55 #60400.1] NOTICE Server is shutdown now.
209 | [2018-06-25 23:37:08 *60430.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
210 | [2018-06-25 23:37:50 #60427.1] NOTICE Server is shutdown now.
211 | [2018-06-25 23:38:06 *60447.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
212 | [2018-06-25 23:38:41 #60444.1] NOTICE Server is shutdown now.
213 | [2018-06-25 23:38:46 *60463.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
214 | [2018-06-25 23:40:05 #60460.1] NOTICE Server is shutdown now.
215 | [2018-06-25 23:40:12 *60477.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
216 | [2018-06-25 23:40:41 #60474.1] NOTICE Server is shutdown now.
217 | [2018-06-25 23:42:09 *60497.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
218 | [2018-06-25 23:43:28 #60494.1] NOTICE Server is shutdown now.
219 | [2018-06-26 00:17:07 *60565.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
220 | [2018-06-26 16:13:20 #60562.1] NOTICE Server is shutdown now.
221 | [2018-06-26 16:13:37 *61363.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
222 | [2018-06-26 16:16:32 #61360.1] NOTICE Server is shutdown now.
223 | [2018-06-26 16:17:31 *61395.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
224 | [2018-06-26 16:17:37 #61392.1] NOTICE Server is shutdown now.
225 | [2018-06-26 16:36:24 *61429.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Call to undefined method linkphp\swoole\websocket\WebSocketContext::context() in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:75
226 | Stack trace:
227 | #0 {main}
228 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 75.
229 | [2018-06-26 16:36:24 $61428.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
230 | [2018-06-26 16:39:09 #61427.1] NOTICE Server is shutdown now.
231 | [2018-06-26 16:42:01 #61445.1] NOTICE Server is shutdown now.
232 | [2018-06-26 16:45:04 #61462.1] NOTICE Server is shutdown now.
233 | [2018-06-26 16:45:29 #61478.1] NOTICE Server is shutdown now.
234 | [2018-06-26 16:46:33 #61492.1] NOTICE Server is shutdown now.
235 | [2018-06-26 16:47:23 #61504.1] NOTICE Server is shutdown now.
236 | [2018-06-26 16:48:44 #61520.1] NOTICE Server is shutdown now.
237 | [2018-06-26 16:48:57 #61537.1] NOTICE Server is shutdown now.
238 | [2018-06-26 16:49:39 #61550.1] NOTICE Server is shutdown now.
239 | [2018-06-26 17:11:20 *61598.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
240 | [2018-06-26 17:12:18 #61595.1] NOTICE Server is shutdown now.
241 | [2018-06-26 17:12:25 *61613.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
242 | [2018-06-26 17:12:34 #61610.1] NOTICE Server is shutdown now.
243 | [2018-06-26 17:12:54 *61629.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
244 | [2018-06-26 17:15:48 #61625.1] NOTICE Server is shutdown now.
245 | [2018-06-26 17:16:10 *61647.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Undefined class constant 'getContext' in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketContext.php:42
246 | Stack trace:
247 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php(125): linkphp\swoole\websocket\WebSocketContext::get(1, 'meta')
248 | #1 {main}
249 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketContext.php on line 42.
250 | [2018-06-26 17:16:10 $61645.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
251 | [2018-06-26 17:16:25 #61644.1] NOTICE Server is shutdown now.
252 | [2018-06-26 17:16:42 *61663.0] NOTICE zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die().
253 | [2018-06-26 17:17:40 #61660.1] NOTICE Server is shutdown now.
254 | [2018-06-26 18:16:35 *61838.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught ArgumentCountError: Too few arguments to function linkphp\swoole\websocket\Dispatcher::handshake(), 0 passed in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 61 and exactly 2 expected in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/Dispatcher.php:31
255 | Stack trace:
256 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php(61): linkphp\swo
257 | [2018-06-26 18:16:35 $61837.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
258 | [2018-06-26 18:16:54 #61836.1] NOTICE Server is shutdown now.
259 | [2018-06-26 18:18:17 *61852.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught framework\Exception in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/Dispatcher.php:42
260 | Stack trace:
261 | #0 /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php(61): linkphp\swoole\websocket\Dispatcher->handshake(Object(Swoole\Http\Request), Object(Swoole\Http\Response))
262 | #1 {main}
263 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/Dispatcher.php on line 42.
264 | [2018-06-26 18:18:17 $61851.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
265 | [2018-06-26 18:18:56 #61850.1] NOTICE Server is shutdown now.
266 | [2018-06-26 18:19:21 #61872.1] NOTICE Server is shutdown now.
267 | [2018-06-26 18:20:17 #61889.1] NOTICE Server is shutdown now.
268 | [2018-06-26 18:21:25 #61907.1] NOTICE Server is shutdown now.
269 | [2018-06-26 18:29:39 #61922.1] NOTICE Server is shutdown now.
270 | [2018-06-26 19:01:22 #61945.1] NOTICE Server is shutdown now.
271 | [2018-06-26 19:01:50 #62026.1] NOTICE Server is shutdown now.
272 | [2018-06-26 19:03:16 #62042.1] NOTICE Server is shutdown now.
273 | [2018-06-26 19:40:13 #62061.1] NOTICE Server is shutdown now.
274 | [2018-06-26 19:40:20 $62192.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=0, signal=11
275 | [2018-06-26 19:41:03 #62191.1] NOTICE Server is shutdown now.
276 | [2018-06-26 19:41:12 *62205.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Error: Access to undeclared static property: linkphp\swoole\websocket\WebSocketServer::$fds in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php:36
277 | Stack trace:
278 | #0 {main}
279 | thrown in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 36.
280 | [2018-06-26 19:41:12 $62204.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
281 | [2018-06-26 19:41:26 #62203.1] NOTICE Server is shutdown now.
282 | [2018-06-26 19:41:38 $62219.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=0, signal=11
283 | [2018-06-26 19:41:45 #62218.1] NOTICE Server is shutdown now.
284 | [2018-06-26 19:42:27 $62237.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=0, signal=11
285 | [2018-06-26 19:42:31 #62236.1] NOTICE Server is shutdown now.
286 | [2018-06-26 19:42:55 $62249.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=0, signal=11
287 | [2018-06-26 19:42:59 #62248.1] NOTICE Server is shutdown now.
288 | [2018-06-26 19:43:21 $62262.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=0, signal=11
289 | [2018-06-26 19:43:29 #62261.1] NOTICE Server is shutdown now.
290 | [2018-06-26 19:44:08 $62278.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=0, signal=11
291 | [2018-06-26 19:44:12 #62277.1] NOTICE Server is shutdown now.
292 | [2018-06-26 19:44:23 $62291.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=0, signal=11
293 | [2018-06-26 19:44:28 #62290.1] NOTICE Server is shutdown now.
294 | [2018-06-26 19:45:05 $62307.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=0, signal=11
295 | [2018-06-26 19:45:10 #62306.1] NOTICE Server is shutdown now.
296 | [2018-06-26 19:45:30 #62323.1] NOTICE Server is shutdown now.
297 | [2018-06-26 19:47:25 *62352.0] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Swoole\Table::set(): the swoole table does not exist. in /Users/liujun/workspace/php/linkphp/vendor/linkphp/swoole/src/websocket/WebSocketServer.php on line 37.
298 | [2018-06-26 19:47:25 $62351.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0
299 | [2018-06-26 20:13:19 #62350.1] NOTICE Server is shutdown now.
300 | [2018-06-26 20:13:33 $62465.0] WARNING swManager_check_exit_status: worker#0 abnormal exit, status=0, signal=11
301 | [2018-06-26 20:13:54 #62464.1] NOTICE Server is shutdown now.
302 | [2018-06-26 20:19:20 #62488.1] NOTICE Server is shutdown now.
303 | [2018-06-26 20:20:00 #62504.1] NOTICE Server is shutdown now.
304 | [2018-06-26 20:25:09 #62528.1] NOTICE Server is shutdown now.
305 |
--------------------------------------------------------------------------------