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代码如下:
<?php
$http = new swoole_http_server('0.0.0.0', 8888);
//设置回调函数,当收到请求时,会回调此函数
$http->on('request', function($request, $response) {
//$request包含了客户端请求的信息
var_dump($request);
//$response服务端响应信息
var_dump($response);
//向客户端发送404状态码
$response->status(404);
//向客户端发送hello
$response->end('hello');
});
//启动http服务
$http->start();
运行该脚本
> /data/php56/bin/php http.php
1、HttpServer如何处理静态文件?
一般是分析客户端发送的请求信息,如果是一个文件,那么读取并发送给客户端,如果不是则返回404。
<?php
$http = new swoole_http_server('0.0.0.0', 8888);
//设置回调函数,当收到请求时,会回调此函数
$http->on('request', function($request, $response) {
$pathInfo = $request->server['path_info'];
$file = __DIR__ . $pathInfo;
//获取文件的MIME
$fileInfo = finfo_open(FILEINFO_MIME);
$fileMime = finfo_file($fileInfo, $file); if(is_file($file)) {
//这里需要手动设置文件MIME格式
$response->header('Content-Type', $fileMime);
$response->sendfile($file);
} else {
$response->status(404);
$response->end('not found');
}
});
//启动http服务
$http->start();
我们在http.php同目录下放上一张1.jpg图片,然后请求192.168.1.222:8888/1.jpg就可正常访问。
2、HttpServer如何处理动态php文件?
<?php
$http = new swoole_http_server('0.0.0.0', 8888);
//设置回调函数,当收到请求时,会回调此函数
$http->on('request', function($request, $response) {
$pathInfo = $request->server['path_info'];
$file = __DIR__ . $pathInfo; if(is_file($file)) {
//判断文件后缀名
if(pathinfo($pathInfo)['extension'] == 'php') {
ob_start();
include $file;
$content = ob_get_contents();
ob_end_clean();
$response->end($content);
} else {
//处理其他文件
}
} else {
$response->status(404);
$response->end('not found');
}
});
//启动http服务
$http->start();
我们在http.php同目录下创建1.php脚本,然后请求192.168.1.222:8888/1.php就可正常访问。
3、HttpServer的守护进程化?
只需设置配置参数daemonize为1就可以了。
<?php
$http = new swoole_http_server('0.0.0.0', 8888); //设置进程数量,和守护进程化
$http->set(array(
'worker_num' => 4,
'daemonize' => 1,
)); //设置回调函数,当收到请求时,会回调此函数
$http->on('request', function($request, $response) {
$pathInfo = $request->server['path_info'];
$file = __DIR__ . $pathInfo; if(is_file($file)) {
//判断文件后缀名
if(pathinfo($pathInfo)['extension'] == 'php') {
ob_start();
include $file;
$content = ob_get_contents();
ob_end_clean();
$response->end($content);
} else { }
} else {
$response->status(404);
$response->end('not found');
}
});
//启动http服务
$http->start();
centos7下swoole1.9的安装与HttpServer的使用的更多相关文章
- SVN CentOS7 下配置svn的安装及基础配置介绍
CentOS7 下配置svn的安装及基础配置介绍 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. 七. 一. 实践环境 CentOS 7操作系统(CentO ...
- centos7下源码方式安装gitlab8.9+发送邮件+ldap
CentOS7下源码方式安装gitlab 环境描述 操作系统: centos7 redis: >=2.8 mysql >=5.5.14 git >=2.7.4 架构设计 一台gitl ...
- centos7下mysql5.7的安装与配置
centos7下MySQL5.7的安装与配置 下载 下载地址 根据系统和版本选择红框中的四个RPM包下载即可,然后放到centos7系统中的/opt目录下,等待稍后安装. 安装前的准备 1. 检查系统 ...
- inux centos7下源码 tar安装5.7.26详解
inux centos7下源码 tar安装5.7.26图文详解 官网地址 https://dev.mysql.com/downloads/mysql/ 1.卸载Linux系统上自带的mysql插件(o ...
- CentOS7下MySQL5.7的安装-RPM方式
Installing MySQL on Linux Using RPM Packages 下载安装包 mysql下载地址:https://dev.mysql.com/downloads/mysql/ ...
- CentOS7下通过rpm方式安装MySQL及插入中文问题解决 [原创]
一 CentOS下通过rpm方式安装MySQL CentOS版本:CentOS-7 MySQL版本:MySQL-5.6.22 在网上搜了一下,Linux下安装MYSQL有三种方式: 1) 通过yum命 ...
- centos7下keepalived1.3.4安装与使用
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障. 一.下载keepalived http://www.keepalived.org/ 如 ...
- 【CentOS】在Centos7 下无图形界面安装 Oracle11g
目标 - 在虚拟机CentOS7中无图形界面安装Oracle11G R2版本 ① 系统要求以及准备 1. 物理内存不小于1G: 查看方式: # grep MemTotal /proc/meminfo ...
- centos7下redis和php-redis安装
centos7下redis安装和php-redis扩展安装 //一直yes就可以了 yum install redis //配置 whereis redis.conf vi /etc/redis.co ...
随机推荐
- Zabbix使用Omsa来监控Dell服务器的硬件状态
OMSA(Open Manage Server Administrator)是Dell主机的硬件检测和维护软件 OpenManage系统管理方案是戴尔公司基于自主研发力量开发的IT系统管理解决方案,通 ...
- 转: 日期格式参考extjs api文档中的Date类型
var md = new Ext.form.DateField({ //下面的格式是:2000-01-01 00:00:00 format: 'Y-m-d H:i:s', ............ } ...
- python模块os
一.os模块概述 Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.(一语中的) 二.常用方法 1.os.name 输出字符串指示正在使用的平台 ...
- TLS协议工作过程;如何应用TLS/SSL协议为WEB流量提供安全
SSL/TLS协议的基本过程是这样的: 客户端向服务器端索要并验证公钥. 双方协商生成"对话密钥". 双方采用"对话密钥"进行加密通信. 上面过程的前两 ...
- angularjs 请求数据转换为Form Data传参
在angularjs中配置好服务,有时传参会导致后台借不到值或者后台直接报错: 这就与后台框架有关,如果后台是以public ModelAndView接收接口传过来的参数,这种情况,前台传参的形式比较 ...
- mysql分表实战
本文主要讲述如何使用存储过程完成本表.并不讨论其他问题.首先我们得看看手册上关于meger引擎的说明: MERGE存储引擎,也被认识为MRG_MyISAM引擎,是一个相同的可以被当作一个来用的MyIS ...
- Jetty-attack-test
import httplib, urllib, ssl, string, sys, getopt from urlparse import urlparse ''' Author: Gotham Di ...
- ubuntu 下安装和启动SSH 服务
安装OPENSSH 服务端 sudo apt-get install openssh-server 查看进程是否启动 ps -e | grep ssh 删除密钥文件 rm /etc/ssh/ssh_h ...
- Python 爬虫常用模块
1. fake_useragent #pip install fake_useragent requests 2.图展示 pip install pyecharts pip install pyech ...
- 05_ssm基础(四)之Spring与持久层的整合
30.31.spring对jdbc的支持jdbcTemplate 使用Spring的JDBC准备: 1):拷贝jar: mysql-connector-java-5.1.11.jar:M ...