VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • centos7环境下swoole1.9的安装与HttpServer的使用方法分析

本文实例讲述了centos7环境下swoole1.9的安装与HttpServer的使用方法,分享给大家供大家参考,具体如下:

一、下载swoole源码包

https://github.com/swoole/swoole-src/releases

如:swoole-src-1.9.6.tar.gz

二、编译安装

> yum install gcc gcc-c++ kernel-devel make autoconf

> tar xf swoole-src-1.9.6.tar.gz

> cd swoole-src-1.9.6

我的php是安装在/data/php56下,请自行修改

> /data/php56/bin/phpize

> ./configure

> make && make install

修改php.ini文件添加如下两行

> vi /data/php56/lib/php.ini

以下路径请根据自的环境修改

extension_dir = "/data/php56/lib/php/extensions/no-debug-zts-20131226/"

extension=swoole.so

查看扩展是否装上

> /data/php56/bin/php -m|grep swoole

三、HttpServer的使用

http.php代码如下:

  1. <?php 
  2. $http = new swoole_http_server('0.0.0.0', 8888); 
  3. //设置回调函数,当收到请求时,会回调此函数 
  4. $http->on('request'function($request$response) { 
  5.   //$request包含了客户端请求的信息 
  6.   var_dump($request); 
  7.   //$response服务端响应信息 
  8.   var_dump($response); 
  9.   //向客户端发送404状态码 
  10.   $response->status(404); 
  11.   //向客户端发送hello 
  12.   $response->end('hello'); 
  13. }); 
  14. //启动http服务 
  15. $http->start(); 

运行该脚本

> /data/php56/bin/php http.php

1、HttpServer如何处理静态文件?

一般是分析客户端发送的请求信息,如果是一个文件,那么读取并发送给客户端,如果不是则返回404。

  1. <?php 
  2. $http = new swoole_http_server('0.0.0.0', 8888); 
  3. //设置回调函数,当收到请求时,会回调此函数 
  4. $http->on('request'function($request$response) { 
  5.   $pathInfo = $request->server['path_info']; 
  6.   $file = __DIR__ . $pathInfo
  7.   //获取文件的MIME 
  8.   $fileInfo = finfo_open(FILEINFO_MIME); 
  9.   $fileMime = finfo_file($fileInfo$file); 
  10.    
  11.   if(is_file($file)) { 
  12.     //这里需要手动设置文件MIME格式 
  13.     $response->header('Content-Type'$fileMime); 
  14.     $response->sendfile($file); 
  15.   } else { 
  16.     $response->status(404); 
  17.     $response->end('not found'); 
  18.   } 
  19. }); 
  20. //启动http服务 
  21. $http->start(); 

我们在http.php同目录下放上一张1.jpg图片,然后请求192.168.1.222:8888/1.jpg就可正常访问。

2、HttpServer如何处理动态php文件?

  1. <?php 
  2. $http = new swoole_http_server('0.0.0.0', 8888); 
  3. //设置回调函数,当收到请求时,会回调此函数 
  4. $http->on('request'function($request$response) { 
  5.   $pathInfo = $request->server['path_info']; 
  6.   $file = __DIR__ . $pathInfo
  7.    
  8.   if(is_file($file)) { 
  9.     //判断文件后缀名 
  10.     if(pathinfo($pathInfo)['extension'] == 'php') { 
  11.       ob_start(); 
  12.       include $file
  13.       $content = ob_get_contents(); 
  14.       ob_end_clean(); 
  15.       $response->end($content); 
  16.     } else { 
  17.       //处理其他文件 
  18.     } 
  19.   } else { 
  20.     $response->status(404); 
  21.     $response->end('not found'); 
  22.   } 
  23. }); 
  24. //启动http服务 
  25. $http->start(); 

我们在http.php同目录下创建1.php脚本,然后请求192.168.1.222:8888/1.php就可正常访问。

3、HttpServer的守护进程化?

只需设置配置参数daemonize为1就可以了。

  1. <?php 
  2. $http = new swoole_http_server('0.0.0.0', 8888); 
  3.    
  4. //设置进程数量,和守护进程化 
  5. $http->set(array
  6.   'worker_num' => 4, 
  7.   'daemonize' => 1, 
  8. )); 
  9.    
  10. //设置回调函数,当收到请求时,会回调此函数 
  11. $http->on('request'function($request$response) { 
  12.   $pathInfo = $request->server['path_info']; 
  13.   $file = __DIR__ . $pathInfo
  14.    
  15.   if(is_file($file)) { 
  16.     //判断文件后缀名 
  17.     if(pathinfo($pathInfo)['extension'] == 'php') { 
  18.       ob_start(); 
  19.       include $file
  20.       $content = ob_get_contents(); 
  21.       ob_end_clean(); 
  22.       $response->end($content); 
  23.     } else { 
  24.        
  25.     } 
  26.   } else { 
  27.     $response->status(404); 
  28.     $response->end('not found'); 
  29.   } 
  30. }); 
  31. //启动http服务 
  32. $http->start();
  33.  



出处:http://www.phpfensi.com/php/20220219/19916.html


相关教程