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