目前,TP5.1官方已经提供了think-swoole2.0,集成程度之前优雅不少,不过5.0的集成方式确实有些鸡肋。因此看了下2.0,为5.0开发了一个扩展包,能够采用composer下载php
composer require xaviertony/xavier-swoole
开发以前,须要先熟悉TP5.0的生命周期,否则就无从下手了。swoole
因为TP主要在Apache或者NGINX下运行,每次运行结束都会进行释放,而swoole则是常住内存,TP5不少类都由单例实现,因此不免会入坑,其中大坑主要是request,因为启动后请求被实例化,若是不删除请求势力,之后每次都是采用这个实例,形成没法正常访问页面,由于每次请求达到后须要先将请求实例删除app
public static function deletethis() { if (!is_null(self::$instance)) { self::$instance=null; } }
第三方包的配置文件必须在application/extra下,文件名为swoole.phpcomposer
<?php return [ 'host' => '0.0.0.0', // 监听地址 'port' => 9501, // 监听端口 'mode' => '', // 运行模式 默认为SWOOLE_PROCESS 'sock_type' => '', // sock type 默认为SWOOLE_SOCK_TCP 'app_path' => getcwd() . '/application', // 应用地址 若是开启了 'daemonize'=>true 必须设置(使用绝对路径) 'file_monitor' => false, // 是否开启PHP文件更改监控(调试模式下自动开启) 'file_monitor_interval' => 2, // 文件变化监控检测时间间隔(秒) 'file_monitor_path' => [], // 文件监控目录 默认监控application和config目录 // 能够支持swoole的全部配置参数 'pid_file' => getcwd() . '/runtime/swoole.pid', 'log_file' => getcwd() . '/runtime/swoole.log', 'task_worker_num' => 20, //'document_root' => getcwd() . 'public', //'enable_static_handler' => true, 'daemonize' => 1,//守护 'worker_num' => 8, //worker process num 'max_request' => 10000, ];
启动命令ui
php think swoole start
守护启动this
php think swoole start -d
中止服务调试
php think swoole stop