├── .DS_Store ├── .env ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── bin ├── .DS_Store ├── cli ├── command │ ├── Test.php │ └── WebSocket.php ├── console │ └── Kernel.php ├── exception │ └── HttpdHandle.php ├── http │ └── Kernel.php ├── httpd ├── link ├── link.sh ├── middleware │ └── BinTest.php ├── phprpc ├── phprpc_center ├── provider │ ├── ConsoleProvider.php │ ├── DaemonProvider.php │ └── ErrorProvider.php ├── rpc │ └── Kernel.php └── ws ├── composer.json ├── conf ├── bin │ ├── httpd.php │ ├── phprpc.php │ ├── phprpc_center.php │ ├── reload.php │ └── ws.php ├── cache.php ├── command.php ├── configure.php ├── cookie.php ├── database.php ├── event.php ├── map.php ├── middleware.php ├── rpc │ ├── customer │ │ ├── center.php │ │ ├── providers.php │ │ └── services.php │ └── provider │ │ ├── center.php │ │ ├── providers.php │ │ └── services.php ├── session.php └── view.php ├── src ├── .DS_Store ├── application │ ├── .DS_Store │ ├── Kernel.php │ ├── command │ │ └── Test.php │ ├── exception │ │ └── Handle.php │ ├── http │ │ ├── controller │ │ │ └── Home.php │ │ └── model │ │ │ └── Home.php │ ├── middleware │ │ └── App.php │ ├── provider │ │ ├── ErrorProvider.php │ │ ├── RouterProvider.php │ │ └── TemplateProvider.php │ └── ws │ │ └── controller │ │ └── Handle.php ├── bootstrap.php ├── common.php ├── resource │ ├── .DS_Store │ ├── README.md │ └── view │ │ ├── http │ │ └── home │ │ │ └── main.html │ │ └── ws │ │ └── chat.html ├── route.php ├── runtime │ ├── README.md │ ├── log │ │ ├── 2018-06-02.log │ │ ├── 2018-06-07.log │ │ ├── link-httpd.log │ │ └── ws.log │ └── temp │ │ ├── temp_c │ │ ├── 7103d428727f75b257e4e8f21b673bfc.c.php │ │ └── 8488f1b8fa698b4a0857d8ffce7aee70.c.php │ │ └── temp_cache │ │ └── 098f6bcd4621d373cade4e832627b4f6.php └── web │ ├── .DS_Store │ ├── .htaccess │ └── index.php └── swoole-ide-helper.phar /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liugene/linkphp/0aa7b9790e8e82ff99040a1038c8021a46848a22/.DS_Store -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | [app] 2 | 3 | debug = true 4 | 5 | [database] 6 | 7 | host = 127.0.0.1 8 | port = 3306 9 | dbuser = root 10 | dbpwd = 123456 11 | dbname = linkphp 12 | dbprefix = lp_ -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | composer.lock 3 | vendor/ 4 | swoole-ide-helper.phar/ -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /bin/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liugene/linkphp/0aa7b9790e8e82ff99040a1038c8021a46848a22/bin/.DS_Store -------------------------------------------------------------------------------- /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 | //这是命令行执行入口文件 -------------------------------------------------------------------------------- /bin/command/Test.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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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/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 | } -------------------------------------------------------------------------------- /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/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/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 | //这是命令行执行入口文件 -------------------------------------------------------------------------------- /bin/link.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Hello World !" -------------------------------------------------------------------------------- /bin/middleware/BinTest.php: -------------------------------------------------------------------------------- 1 | 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/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 | -------------------------------------------------------------------------------- /bin/provider/DaemonProvider.php: -------------------------------------------------------------------------------- 1 | make(\linkphp\console\Console::class)->init(); 15 | return $definition; 16 | // TODO: Implement update() method. 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | //这是命令行执行入口文件 -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "linkphp/linkphp", 3 | "type": "project", 4 | "license": "apache-2.0", 5 | "description": "php Web mvc/api框架 ", 6 | "keywords": ["framework","linkphp","MVC","api"], 7 | "authors": [ 8 | { 9 | "name": "liugene", 10 | "email": "liujun2199@vip.qq.com" 11 | } 12 | ], 13 | "repositories": { 14 | "packagist": { 15 | "type": "composer", 16 | "url": "https://packagist.phpcomposer.com" 17 | } 18 | }, 19 | "require":{ 20 | "php": "^5.5 || ^7.0", 21 | "linkphp/framework":"dev-master", 22 | "linkphp/db":"dev-master", 23 | "linkphp/cache":"dev-master", 24 | "linkphp/log":"dev-master", 25 | "linkphp/jwt":"dev-master", 26 | "linkphp/page":"dev-master", 27 | "linkphp/upload":"dev-master", 28 | "linkphp/verify":"dev-master", 29 | "linkphp/curl":"dev-master", 30 | "linkphp/router":"dev-master", 31 | "linkphp/event":"dev-master", 32 | "linkphp/config":"dev-master", 33 | "linkphp/error":"dev-master", 34 | "linkphp/console":"dev-master", 35 | "linkphp/http":"dev-master", 36 | "linkphp/session":"dev-master", 37 | "linkphp/validator":"dev-master", 38 | "linkphp/di":"dev-master", 39 | "linkphp/middleware":"dev-master", 40 | "linkphp/template":"dev-master", 41 | "liugene/links":"dev-master", 42 | "linkphp/loader":"dev-master", 43 | "linkphp/process":"dev-master", 44 | "linkphp/swoole":"dev-master", 45 | "linkphp/cookie":"dev-master", 46 | "phprpc/phprpc":"dev-master" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /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/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/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 | ]; -------------------------------------------------------------------------------- /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 | ]; -------------------------------------------------------------------------------- /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/cache.php: -------------------------------------------------------------------------------- 1 | 'File', 6 | // 缓存保存目录 7 | 'path' => RUNTIME_PATH . 'temp/temp_cache/', 8 | // 缓存前缀 9 | 'prefix' => '', 10 | // 缓存有效期 0表示永久缓存 11 | 'expire' => 0, 12 | 'ext' => '.php' 13 | ]; -------------------------------------------------------------------------------- /conf/command.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/cookie.php: -------------------------------------------------------------------------------- 1 | '', 5 | 'domain' => '', 6 | 'secure' => '', 7 | 'httponly' => '', 8 | 'expire' => '' 9 | ]; -------------------------------------------------------------------------------- /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 | ]; -------------------------------------------------------------------------------- /conf/event.php: -------------------------------------------------------------------------------- 1 | [ 5 | // '\app\controller\main\Event::class'; 6 | //] 7 | // 'test' => [ 8 | // '\app\controller\main\Event::class', 9 | // ] 10 | ]; 11 | -------------------------------------------------------------------------------- /conf/map.php: -------------------------------------------------------------------------------- 1 | 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 | ]; -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /conf/rpc/customer/center.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 | ]; -------------------------------------------------------------------------------- /conf/rpc/customer/services.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 | ]; -------------------------------------------------------------------------------- /conf/rpc/provider/services.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/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/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liugene/linkphp/0aa7b9790e8e82ff99040a1038c8021a46848a22/src/.DS_Store -------------------------------------------------------------------------------- /src/application/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liugene/linkphp/0aa7b9790e8e82ff99040a1038c8021a46848a22/src/application/.DS_Store -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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/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 | } -------------------------------------------------------------------------------- /src/application/http/model/Home.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 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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/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/common.php: -------------------------------------------------------------------------------- 1 | 11 | // +---------------------------------------------------------------------- 12 | // | 应用公共函数文件 13 | // +---------------------------------------------------------------------- 14 | -------------------------------------------------------------------------------- /src/resource/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liugene/linkphp/0aa7b9790e8e82ff99040a1038c8021a46848a22/src/resource/.DS_Store -------------------------------------------------------------------------------- /src/resource/README.md: -------------------------------------------------------------------------------- 1 | # LinkPHP 框架系统缓存日志目录 2 | -------------------------------------------------------------------------------- /src/resource/view/http/home/main.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | {$linkphp} 10 | 11 | 12 | 13 | {$linkphp} 14 |
15 |
16 | 17 | -------------------------------------------------------------------------------- /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/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/runtime/README.md: -------------------------------------------------------------------------------- 1 | # LinkPHP 框架系统缓存日志目录 2 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /src/runtime/temp/temp_c/7103d428727f75b257e4e8f21b673bfc.c.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | BananaChat 8 | 9 | 10 | 11 | BananaChat 12 | 13 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /src/runtime/temp/temp_cache/098f6bcd4621d373cade4e832627b4f6.php: -------------------------------------------------------------------------------- 1 | 4 | test -------------------------------------------------------------------------------- /src/web/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liugene/linkphp/0aa7b9790e8e82ff99040a1038c8021a46848a22/src/web/.DS_Store -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | //只需要这么几句话就可以运行 !>