由于最近的项目运用到了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秒执行输出结果(比如插入更新记录等,外面调用);时间原因就简单介绍下,初步接触学习还希望大家多多指教。
相关推荐
6. **编译和安装**: 运行`make`命令进行编译,然后使用`make install`将Swoole安装到PHP扩展目录: ``` make make install ``` 7. **更新php.ini**: 在你的`php.ini`文件中添加以下行,以启用Swoole扩展: ...
在本示例中,"swoole,php,简单聊天室"是一个基于Swoole和PHP构建的实时通信应用,可以实现用户之间的即时消息传递。亲测可用表明该聊天室功能已经经过实际测试,能够正常运行和通信。 创建这样一个聊天室,首先需要...
PHP + Swoole 开发的简单聊天室demo, 主要是 websockt 的应用, 如果对你学习Swoole有帮助,欢迎 star 。 环境要求 PHP >= 7.0 Swoole composer 安装 composer create-project -s dev moell/webim
一旦确认Swoole扩展安装成功,就可以开始使用Swoole来创建各种网络应用。例如,创建一个简单的TCP服务器可以通过编写一个server.php文件来实现。这个文件创建了一个Server对象,监听特定的IP地址和端口(比如***.*.*...
Swoole-Loader是针对PHP的Swoole扩展的...理解和熟练使用Swoole-Loader,对于优化Swoole应用的性能和稳定性至关重要。在实际开发中,应结合项目需求和类库特点,灵活运用Swoole-Loader提供的功能,实现最佳的性能效果。
* 简单crontab:Swoole提供了简单crontab功能,用于执行定时任务。 七、Swoole的mysql连接池 * 连接池:Swoole提供了mysql连接池功能,用于管理mysql连接。 八、Swoole的其他功能 * 文件操作:Swoole提供了文件...
【标题】"cpp-一个swoole的简单实现学习swoole源码的练习之作" 涉及的核心知识点是Swoole库在C++中的应用,以及通过实践理解Swoole源码的学习方法。 Swoole是一个高性能、异步、非阻塞的PHP扩展,用于构建网络...
1. 配置Swoole扩展:首先,需要确保PHP环境中已经安装并启用了Swoole扩展。通过php.ini配置文件,可以启用Swoole扩展,并设置相关参数,如最大工作进程数、最大连接数等。 2. 集成Yaf框架:在Swoole的HTTP服务器中...
另外,swoole框架依赖swoole扩展,是swoole扩展的应用实例。 框架-Swoole扩展-Swoole文档中心 http://wiki.swoole.com/wiki/page/p-framework.html swoole扩展是基础,基于swoole扩展,可以做出多种框架,而不仅仅...
Swoole Loader 7.2.SO组件是一款专为PHP设计的扩展,用于增强PHP应用程序的性能和功能。Swoole是一个高性能、异步、非阻塞的PHP扩展,它允许开发者编写并发和实时Web应用程序。Swoole Loader是Swoole的一部分,提供...
在本文中,我们将深入探讨Swoole 2.0.9版本的相关知识点,包括其特点、功能、安装与使用方法,以及如何通过源代码进行编译和安装。 1. **Swoole简介** Swoole是由中国开发者李明宇创建的,它为PHP提供了原生的多...
这通常涉及下载Swoole的源代码,配置编译选项,然后编译和安装。 以下是更详细的Swoole扩展知识: 1. **Swoole的核心特性**: - **事件驱动**:Swoole基于事件驱动模型,利用非阻塞I/O和异步编程,极大地提高了...
- 安装Swoole扩展通常需要通过编译源码来完成,这涉及到下载Swoole的源代码包(如`swoole-2.2.0`),然后使用PHP的配置工具`phpize`进行编译和安装。 - 在`php.ini`配置文件中启用Swoole扩展,通过添加`extension=...
7. **实际应用**:Swoole Loader扩展使得你可以更灵活地在项目中加载自定义的类和函数,加速应用性能。例如,你可以使用Swoole的异步任务处理、协程(Coroutine)功能来优化高并发场景下的代码执行。 至此,你已经...
具体到压缩包中的文件,`package.xml`通常包含了项目的元数据,如版本信息、依赖库等,这对于安装和管理Swoole扩展非常有用。而`swoole-4.4.8`目录则包含了该版本的源代码,我们可以在此基础上进行编译安装或进一步...
4. TCP/UDP 服务器:除了 HTTP,Swoole 还能用于构建 TCP 和 UDP 服务,广泛应用于即时通讯、数据传输等场景。 5. 定时器:内置定时器功能,可用于执行周期性任务,如心跳检测、任务调度等。 6. TCP 长连接:支持...
在本项目中,"swoole+redis+php+html5+js实现简单的群聊" 是一个使用现代Web技术构建的实时通信应用。这个应用程序利用Swoole作为服务器端的高性能扩展,Redis作为数据存储,PHP作为后端处理语言,HTML5作为前端展示...
在解压的swoole-4.6.7目录中,这个文件可以帮助我们了解Swoole的构建过程和依赖,以便于在自己的环境中正确安装和配置。 总的来说,Swoole为PHP开发者提供了全新的开发模式,通过协程、异步编程,以及强大的网络...
本篇文章将深入探讨如何利用Swoole开发一个简单的Web聊天室,以及它背后的原理和技术要点。 首先,我们要理解Swoole的核心特性。Swoole是一款开源的PHP扩展,它提供了异步、非阻塞的网络I/O模型,极大地提高了PHP...