Phalcon 是开源、全功能栈、使用 C 扩展编写、针对高性能优化的PHP5框架http://myleftstudio.com/
<?php class ControllerBase extends Phalcon\Mvc\Controller { protected function forward($uri) { //TODO 考虑这里是否可以接收url中的参数 $uriParts = explode('/', $uri); return $this->dispatcher->forward( array( 'controller' => $uriParts[0], 'action' => $uriParts[1] ) ); } protected function redirect($uri = '', $param = array()) { $url = new Phalcon\Mvc\Url(); $uri .= !empty($param) ? '/?' . http_build_query($param) : ''; header("location:" . $url->get($uri)); die; } /** * 获取当前controller下的方法 数据 * @return string */ public function getActionInfo() { $action = '/' . $this->dispatcher->getControllerName() . '/' . $this->dispatcher->getActionName(); return $this->session->get($action); } }
Swoole PHP语言的异步、并行、高性能网络通信框架, 使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列, 毫秒定时器,异步文件读写,异步DNS查询。Swoole可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网、车联网、智能家居等领域。 使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。
下载源代码包后,在终端进入源码目录,执行下面的命令进行编译和安装
cd swoole phpize ./configure make sudo make install
安装成功
编译安装成功后,修改php.ini加入
extension=swoole.so
通过
php -m
或
phpinfo()
来查看是否成功加载了swoole,
如果没有,可能是
php.ini
的路径不对,可以使用
php -i |grep php.ini
来定位到
php.ini
的绝对路径。
TCP Server
<?php //server.php $serv = new swoole_server("127.0.0.1", 9501); $serv->set(array( 'worker_num' => 8, //工作进程数量 'daemonize' => true, //是否作为守护进程 )); $serv->on('connect', function ($serv, $fd){ echo "Client:Connect.\n"; }); $serv->on('receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, 'Swoole: '.$data); $serv->close($fd); }); $serv->on('close', function ($serv, $fd) { echo "Client: Close.\n"; }); $serv->start();
TCP Client
<?php $client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); //设置事件回调函数 $client->on("connect", function($cli) { $cli->send("hello world\n"); }); $client->on("receive", function($cli, $data){ echo "Received: ".$data."\n"; }); $client->on("error", function($cli){ echo "Connect failed\n"; }); $client->on("close", function($cli){ echo "Connection close\n"; }); //发起网络连接 $client->connect('127.0.0.1', 9501, 0.5);
php命令行开启监听
php server.php
客户端访问
浏览器运行代码
<?php $client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC); //同步阻塞 $client->connect('127.0.0.1', 9503, 0.5);////发起网络连接 $client->send("hello world\n"); $data = $client->recv(1024); echo $data; unset($client);
php+swoole目前的主要竞争对象是node.js,两者的使用场景差不多。php在web领域的庞大使用量,如果你的现有项目也是用php构建的,用swoole写后端服务的时候可以复用大量的现有模块,这对企业开发的一致性是很重要的,理论上讲只需要维护一套基础就行了
李丹阳 https://github.com/LinkedDestiny/swoole-doc
phpstorm-swoole-ide-helper 代码自动补全http://hudeyong926.iteye.com/admin/blogs/2285968