swoole完美适配thinkphp5

以下是本人亲自调试配置成功后,为方便大家学习,节省大家研究时间,在此共享。

1.开启httpServer请求

  可以在thinkphp的目录下创建一个server目录,里面创建一个http_server.php

2.在http_server.php中做几件事

    1.配置静态资源文件

//配置静态文件  http://www.live-swoole.com:8811/
	$http->set(
		[
			'enable_static_handler'	=>true, //true则,底层收到Http请求会先判断document_root路径下是否存在此文件,如果存在会直接发送文件内容给客户端,不再触发onRequest回调
			'document_root'	=> '/var/www/html/thinkphp5/public/static' ,  //默认静态资源文件存放目录
			'worker_num' => 5,
		]
	);

2.swoole进程开启时加载thinkphp框架

$http->on('WorkerStart',function(swoole_server $serv,$worker_id){
		// 定义应用目录
		define('APP_PATH', __DIR__ . '/../application/');
		// 加载框架里面的文件
		require __DIR__ . '/../thinkphp/base.php';
	});

3、因为swoole接收参数和thinkphp中接收不一样,所以需要转换为thinkphp可识别,转换POST参数示例如下:

$_POST = [];解决swoole对全局变量不会自动注销
if(isset($request->post)){
			foreach ($request->post as $k => $v) {
				$_POST[$k] = $v;
			}
		}

4.解决每次路由访问显示第一次访问时的路径信息

找到thinkphp/library/think/Request.php文件
function path 中的if (is_null($this->path)) {}注释或删除  里面的内容不动

function pathinfo中的if (is_null($this->pathinfo)) {}注释或删除  里面的内容不动


结束!有疑问的欢迎在线留言交流。


    

你可能感兴趣的:(借鉴学习)