Swoole MVC框架Hyperf(类似laravel)

20 篇文章 0 订阅

其实超出浏览器,PHP仍有用武之地,Linux上PHP通过pcntl、posix、sysvshm、sysvmsg、libevent、 swoole等PECL扩展支持,用纯PHP就可以编写不依赖Nginx/Apache的高性能Socket应用服务器(独立控制进程,以守护进程运行)
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
swoole.use_shortname='off'

通过php -m来查看是否成功加载了swoole.so,如果没有可能是php.ini的路径不对,可以使用php --ini来定位到php.ini的绝对路径

安装ext-async扩展:https://github.com/swoole/ext-async/releases 下载版本号必须跟swoole一致

tar –xzf ext-async-4.4.16.tar.gz
cd ext-async-4.4.16
./configure
make

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);

安装Hyperf

1》安装hyperf:通过composer来安装composer create-project hyperf/hyperf-skeleton;
2》因为hyperf是依赖composer的,所以安装完需要在对应的项目目录composer install,安装composer的依赖包,不然无法启动;
3》启动服务:php bin/hyperf.php start,服务启动之后当修改代码并不会自动重新启动服务,需要手动重启;
4》然后访问,hyperf默认访问的是index首页;http://localhost:9501/或者另开一个命令窗口,执行:curl 127.0.0.1:9501,返回如下图所示:

hyperf是CLI运行的,每次修改了代码后需要手动ctrl+c结束后重新运行

这里官方也给出了解决方案:安装一个热重启/热重载的组件(Watcher提供了文件修改后立马重启的功能,适用于开发环境提供便利)

composer require hyperf/watcher --dev

发布配置

php bin/hyperf.php vendor:publish hyperf/watcher

将原来正在运行的项目 ctrl+c 给结束掉进程。在项目的根目录运行

#php bin/hyperf.php start 废弃
php bin/hyperf.php server:watch

这个时候就会重新运行起来

这边可以看hyperf的官网:hyperf官网链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值