本篇文件主要介绍Swoole的作用、优势、场景以及学习经历。
Swoole的作用
官网第一句话是:重新定义PHP。其实也就是弥补、丰富和扩展了PHP。体现在:PHP的异步、网络和服务器方面。
异步:异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。
以上的这么多功能,丰富和扩展了PHP的。
/** * 过滤字符串中的所有空格 * @param $string * @return string */ public static function createUri($string) { $search = array(" ", " ", "\n", "\r", "\t"); $replace = array("", "", "", "", ""); return str_replace($search, $replace, $string); }
在理解php-fpm之前,先理解下什么叫CGI。CGI是为了保证web server(比如说nginx)传递过来的数据是标准格式。
如果是请求地址为动态文件,比如/index.php,会启动对应的CGI程序(可以理解为PHP的解析器),web server会传递如下数据给PHP的解析器。如:url地址、查询字符串、POST数据(如果是POST请求的话)、HTTP Header等。所以CGI规定需要要传哪些数据,以什么样的格式传递给后方来处理这个请求的协议,再以规定CGI的格式返回处理后的结果,最终退出进程,结果返回到浏览器。
随着人们对Web即时应用需求的不断上升,Server Push(推送)技术在聊天、消息提醒尤其是社交网络等方面开始兴起,成为实时应用的数据流核心。这篇日志试图探讨的便是各种适合于PHP的Push的实现方式以及其优劣。
1. 什么是Server Push
想象在聊天应用中,如果使用传统的ajax来承担消息的传入,那么一般是通过每隔一定时间拉取一次信息的方式实现,但是其实这种方式有大量查询是浪费的。聊天等Web应用更需要服务器在特定时间来主动告知前端有新的消息(Push),而不是前端每时每刻问服务器:“来消息了吗?”(Pull)。这也正是为什么这个技术常被叫做反向ajax。
其他别名:Comet,反向Ajax
从京东的订单流程中摘抄下来JS表单验证函数:
/** * <strong>判断是否是空</strong> * @param value */ function isEmpty(value){ if(value == null || value == "" || value == "undefined" || value == undefined || value == "null"){ return true; } else{ value = value.replace(/\s/g,""); if(value == ""){ return true; } return false; } }
通过yiic创建YII应用要注意:
一般情况下安装wamp的时候,没有将php.exe加入到Windows的环境变量中,所以直接按照YII中文教程操作,报以下错误提示: ‘”php.exe”’ 不是内部或外部命令,也不是可运行的程序或批处理文件。