由于最近的项目运用到了swoole,那现在就简单的介绍下我的心得,希望大家多多指教;swoole主要用于PHP异步通信服务,多用于消息队列和游戏等,类似的还有wokerman也是做异步服务的。
1.安装Cygwin64
貌似在windows环境不支持但是支持MAC和linux环境,windows下需要安装模拟类似linux虚拟环境的软件Cygwin64 Terminal,安装连接请参考如下http://blog.csdn.net/u014207604/article/details/49926207 我在自己笔记本上安装成功(注意其他连接安装不正确,需要安装pcre-devel);
2.下载swoole源码并解压到Cygwin64安装目录的home文件夹;
3.在Cygwin64中生成配置文件和添加PHP的swoole的扩展;
4.php -m 查看安装是否成功;
上面是我能回忆的安装步骤,大家可以动手尝试安装下;
文件目录大概如下图:
swoole的相关文档链接如下 https://wiki.swoole.com/wiki/page/788.html
1.首先我们先创建TCP的server并命名为server.php 代码如下:
<?php
//创建Server对象,监听 127.0.0.1:9501端口
$serv = new swoole_server("127.0.0.1", 9501);
//监听连接进入事件
$serv->on('connect', function ($serv, $fd) {
echo "Client: Connect.\n";
});
//监听数据接收事件
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
$serv->send($fd, "Server111: ".$data);
});
//监听连接关闭事件
$serv->on('close', function ($serv, $fd) {
echo "Client: Close.\n";
});
//启动服务器
$serv->start();
?>
2.再建立TCP链接server的“客户端”请求并命名为async_client.php
<?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 "Received222: ".$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);
?>
3.效果如下:
//基本简单的就是这样的,大家可搞搞,还是蛮好玩的。
下面我简单说下工作中用到的swoole技术:
public function start_swoole($data) {
$max_worker_num = 30;
$data_num = count($data);
if ($data_num == 0) {
return;
}
$min_worker_num = min($data_num, $max_worker_num);
$data_arr = array_chunk($data, ceil($data_num / $min_worker_num), true);
$worker_num = ceil($data_num / ceil($data_num / $min_worker_num)); //进程数
$workers = [];
for ($i = 0; $i < $worker_num; $i++) {
$process = new \swoole_process(function (\swoole_process $worker) {
//$arr = [];
$json_data = json_decode($worker->pop(), true);
//业务逻辑处理.....
$worker->exit(0);
}, false, true);
$process->useQueue();
$pid = $process->start(); //开启异步服务进程ID
$workers[$pid] = $process;
}
$j = 0;
foreach ($workers as $pid => $process) {
if (isset($data_arr[$j])) {
$process->push(json_encode($data_arr[$j]));
$j++;
}
}
for ($i = 0; $i < $worker_num; $i++) {
$ret = \swoole_process::wait();
$pid = $ret['pid'];
unset($workers[$pid]);
}
}
//运行的结果是:每个1秒执行输出结果(比如插入更新记录等,外面调用);时间原因就简单介绍下,初步接触学习还希望大家多多指教。
相关推荐
另外,swoole框架依赖swoole扩展,是swoole扩展的应用实例。 框架-Swoole扩展-Swoole文档中心 http://wiki.swoole.com/wiki/page/p-framework.html swoole扩展是基础,基于swoole扩展,可以做出多种框架,而不仅仅...
软擎是基于 Php 7.2+ 和 Swoole 4.4+ 的高性能、简单易用的开发框架。支持同时在 Swoole Server 和 php-fpm 两种模式下运行。内置了 Http (Swoole, Fpm),Tcp,WebSocket,Process,Crontab服务。….zip 软件开发...
开源的企业微信应用开发框架&引擎,是一套通用的企业微信多租户SaaS管理系统,得益于 Swoole 和 Hyperf 框架的优秀,可提供超高性能的同时,也保持着极其灵活的可扩展性。 应用场景 可用于电商、金融、零售、餐饮...
完善数据库引擎,简单高效(其他swoole框架几乎没有哦) 易于学习,开发效率高,简单高效的数据库引擎 自动生成API接口文档 使用IDE(Sublime Text / VSCode / PhpStorm等)有完整的代码提示 适用场景 微服务架构的...
让你更自由地飞基于ThinkPHP 5.1重构,但核心代码兼容5.0版本,保证老用户最小升级成本增加对swoole支持,同时支持swoole协程和全swoole模式重新规范目录结构,更贴心CMF核心库及应用使用composer加载合并API到框架...
MoChat 是开源的企业微信应用开发框架&引擎,是一套通用的企业微信多租户SaaS管理系统,得益于 Swoole 和 Hyperf 框架的优秀,MoChat 可提供超高性能的同时,也保持着极其灵活的可扩展性。 应用场景 可用于电商、...
#应用说明版本1.1增加简单的后台用户管理。版本1.0该应用为php的ftp服务器端,能够取代...本程序依赖php的swoole扩展swoole安装方法: 1,pecl脚本自动安装pecl install swoole 2,源码安装sudo apt-get install ...
ycsocket概述基于swoole和swoole_orm的极度轻量级websocket框架,我认为php就应该简单高效,各位可以自己扩展到TCP / UDP,HTTP。在ycsocket中,采用的是全协程化,全池化的数据库,缓存IO,支持重连,对于IO密集型...
MoChat 是开源的企业微信应用开发框架&引擎,是一套通用的企业微信多租户SaaS管理系统,得益于 Swoole 和 Hyperf 框架的优秀,MoChat 可提供超高性能的同时,也保持着极其灵活的可扩展性。可用于电商、金融、零售、...
ManaPHP追求简单,试图让更多开发者以涉足学习成本享受到Swoole带来的高效与全新的编程体验。与传统MVC框架比较ManaPHP支持三种执行方式:传统模式(Apache / FPM),常驻内存模式,协程模式。后两种模式具有传统...
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用 开发和简化企业级应用开发而诞生的。拥有众多的优秀功能和特性,经历了三年多发展的同时,在社区...
MoChat 是开源的企业微信应用开发框架&引擎,是一套通用的企业微信多租户SaaS管理系统,得益于 Swoole 和 Hyperf 框架的优秀,MoChat 可提供超高性能的同时,也保持着极其灵活的可扩展性。 应用场景 可用于电商、...
SIYUCMS V6.1 快速开发内容管理系统。SIYUCMS 基于 ThinkPHP6.1 + AdminLTE 开发,简单 / 易用 / 响应式 / 低门槛。系统内置了表单构建器和表格构建器,配合后台模块管理和字段管理能快速方便的构建Web应用程序
同时亦可兼容微擎系统开发应用使用。 MyCms基于Apache2.0开源协议发布,免费且可商业使用(需保留前后台版权标识),欢迎持续关注我们。 支持多语言 简易安装程序 快速CURD操作 对接微信公众号 支持Swoole加速 后台...
GSF(GridSwooleFramework)基于Swoole框架进行二次封装完善 ,降低了PHP使用swoole的门槛。Swoole由于其文档太少,难度对于PHP程序员来说过于大,...GSF框架就是为了让PHP程序员更简单的使用Swoole来开发自己的应用程序。
MoChat是开源的企业微信应用开发框架和引擎,是一套通用的企业微信管理系统,得益于Swoole和Hyperf框架的优秀,MoChat可提供超高性能的同时,也保持着极其灵活的可扩展性。 应用场景 可用于电力商,金融,零售,餐饮...
Lumen IM 是一个网页版在线即时聊天项目,前端使用 Element-ui + Vue,后端采用了基于 Swoole 开发的 Hyperf 协程框架进行接口开发,并使用 WebSocket 服务进行消息实时推送。基于 Swoole WebSocket 服务做消息即时...
一份代码同时支持PHP-FPM模式、swoole常驻模式的唯一扩展框架,可以开发高性能的web应用或者常驻内存应用,让开发者不再为框架烦恼,不再为性能忧愁,写最少的代码,做最靓的仔! 最新版本:4.0.1 官方网站:Gene...
简单介绍资源价值,让用户产生想要获取的冲动。 3.项目详细: 附件内容付费可查看,详情内容付费可查看。 我们为用户做了两种获取资源的方式:免费获取--付费购买如果客户不想花钱,而你的资源又非常的诱人, ...
yaf-lib 基于 yaf 的应用开发框架, 简单的mvc中间层继承补充, 常用缓存、数据库等驱动类, 添加widget组件模块,及layout插件, rpc服务化,支持hprose、yar等, 支持xhprof性能调试。requirementphp 5.3 ...