Swoole入门教程(一)

本篇文件主要介绍Swoole的作用、优势、场景以及学习经历。

Swoole的作用

官网第一句话是:重新定义PHP。其实也就是弥补、丰富和扩展了PHP。体现在:PHP的异步、网络和服务器方面。

异步:异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。

以上的这么多功能,丰富和扩展了PHP的。

继续阅读

PHP过滤字符串中所有空格

 

/**
 * 过滤字符串中的所有空格
 * @param $string
 * @return string
 */
public static function createUri($string)
{
    $search = array(" ", " ", "\n", "\r", "\t");
    $replace = array("", "", "", "", "");
    return str_replace($search, $replace, $string);
}

WebSocket原理和如何实现持久连接

HTTP协议

HTTP协议是基于TCP协议的应用层协议。HTTP协议的工作模式是request/response模式。在一次通信中,必须首先由client向server发起TCP连接,然后server接受该TCP连接请求,在TCP连接建立之后,首先由client发起HTTP request,然后server再发出HTTP response。

问题:Server不允许发送TCP请求。也就是说明Server没有收到request的情况下,没把发发送response给客户端。

解决方法:

1、多个HTTP请求不断发出。如Ajax轮询,浏览器每隔几秒就问下服务器是否还有新的消息。随之而来的问题占用服务器资源。

2、long poll 跟Ajax轮询差不多的。采取的是阻塞模式。没有收到服务器端的响应,就一直不返回Response给客户端。这点感觉好像个孩子。看到好玩的好吃的话,一定要到手,否则就哭着不走。哈哈… 带来的问题就是需要很高的并发。

WebSocket

WebSocket是Html5新的协议。借用了HTTP的协议来完成一部分握手。实现了浏览器与服务器全双工通信。HTTP协议建立在TCP协议之上的,当进行HTTP通信时候,Client和Server之间已经建立起了一个TCP连接,而任何TCP连接都是可以用来双向通信的,所以我们就可以利用这个现成的TCP连接来实现Client和Server的双向通信。

 

继续阅读

web服务器下nginx如何配置反向代理

Nginx如何配置反向代理呢

反向代理

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。Nginx作为web服务器的重要功能就是反向代理。

Nginx使用默认自带的proxy_pass指令, 不需要新增额外的模块,就可以实现反向代理。

举个例子:比如在CentOS服务器上安装Splunk。Splunk默认安装完成后的访问地址为:http://IP地址:8000。让其他人访问这个地址很麻烦,而且不容易记住。此时可以使用Nginx反向代理。配置单独的域名直接访问。

继续阅读

PHP应用服务器(Apache/Nginx)设置环境变量

为PHP应用服务器(Apache/Nginx)设置环境变量可以使不同的环境调用不同的配置。

设置Apache环境变量

格式为:SetENV 环境变量的名称  环境变量的值。

例如:SetENV ENV staging,意思设置ENV环境变量的值为staging。

<VirtualHost *:80>
 DocumentRoot 项目目录
 ServerName 域名
 DirectoryIndex index.php

//设置Apache环境变量
 SetENV ENV staging
</VirtualHost>

继续阅读

PHP-FPM理解,基于CGI和Fastcgi

在理解php-fpm之前,先理解下什么叫CGI。CGI是为了保证web server(比如说nginx)传递过来的数据是标准格式。

CGI程序

如果是请求地址为动态文件,比如/index.php,会启动对应的CGI程序(可以理解为PHP的解析器),web server会传递如下数据给PHP的解析器。如:url地址、查询字符串、POST数据(如果是POST请求的话)、HTTP Header等。所以CGI规定需要要传哪些数据,以什么样的格式传递给后方来处理这个请求的协议,再以规定CGI的格式返回处理后的结果,最终退出进程,结果返回到浏览器。

继续阅读