`

Swoole的安装和简单应用

阅读更多

由于最近的项目运用到了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秒执行输出结果(比如插入更新记录等,外面调用);时间原因就简单介绍下,初步接触学习还希望大家多多指教。

 

 

  • 大小: 19.1 KB
  • 大小: 65.7 KB
  • 大小: 54.3 KB
分享到:
评论

相关推荐

    swoole安装

    6. **编译和安装**: 运行`make`命令进行编译,然后使用`make install`将Swoole安装到PHP扩展目录: ``` make make install ``` 7. **更新php.ini**: 在你的`php.ini`文件中添加以下行,以启用Swoole扩展: ...

    swoole,php,简单聊天室

    在本示例中,"swoole,php,简单聊天室"是一个基于Swoole和PHP构建的实时通信应用,可以实现用户之间的即时消息传递。亲测可用表明该聊天室功能已经经过实际测试,能够正常运行和通信。 创建这样一个聊天室,首先需要...

    Linux下源码包安装Swoole及基本使用操作图文详解

    一旦确认Swoole扩展安装成功,就可以开始使用Swoole来创建各种网络应用。例如,创建一个简单的TCP服务器可以通过编写一个server.php文件来实现。这个文件创建了一个Server对象,监听特定的IP地址和端口(比如***.*.*...

    swoole-loader.zip

    Swoole-Loader是针对PHP的Swoole扩展的...理解和熟练使用Swoole-Loader,对于优化Swoole应用的性能和稳定性至关重要。在实际开发中,应结合项目需求和类库特点,灵活运用Swoole-Loader提供的功能,实现最佳的性能效果。

    Swoole入门教程及文档

    * 简单crontab:Swoole提供了简单crontab功能,用于执行定时任务。 七、Swoole的mysql连接池 * 连接池:Swoole提供了mysql连接池功能,用于管理mysql连接。 八、Swoole的其他功能 * 文件操作:Swoole提供了文件...

    cpp-一个swoole的简单实现学习swoole源码的练习之作

    【标题】"cpp-一个swoole的简单实现学习swoole源码的练习之作" 涉及的核心知识点是Swoole库在C++中的应用,以及通过实践理解Swoole源码的学习方法。 Swoole是一个高性能、异步、非阻塞的PHP扩展,用于构建网络...

    swoole-yaf, 结合swoole扩展和Yaf框架,使用swoole的内置http_server.zip

    1. 配置Swoole扩展:首先,需要确保PHP环境中已经安装并启用了Swoole扩展。通过php.ini配置文件,可以启用Swoole扩展,并设置相关参数,如最大工作进程数、最大连接数等。 2. 集成Yaf框架:在Swoole的HTTP服务器中...

    一个很简单实用 的 swoole 框架 麻雀虽小, 五脏俱全.rar

    另外,swoole框架依赖swoole扩展,是swoole扩展的应用实例。 框架-Swoole扩展-Swoole文档中心 http://wiki.swoole.com/wiki/page/p-framework.html swoole扩展是基础,基于swoole扩展,可以做出多种框架,而不仅仅...

    swoole-loader72.SO组件下载

    Swoole Loader 7.2.SO组件是一款专为PHP设计的扩展,用于增强PHP应用程序的性能和功能。Swoole是一个高性能、异步、非阻塞的PHP扩展,它允许开发者编写并发和实时Web应用程序。Swoole Loader是Swoole的一部分,提供...

    基于PHP + Swoole 实现的简单聊天室源码+项目说明.zip

    PHP + Swoole 开发的简单聊天室demo, 主要是 websockt 的应用, 如果对你学习Swoole有帮助,欢迎 star 。 环境要求 PHP &gt;= 7.0 Swoole composer 安装 composer create-project -s dev moell/webim

    swoole2.0.9下载,swoole2源码下载

    在本文中,我们将深入探讨Swoole 2.0.9版本的相关知识点,包括其特点、功能、安装与使用方法,以及如何通过源代码进行编译和安装。 1. **Swoole简介** Swoole是由中国开发者李明宇创建的,它为PHP提供了原生的多...

    php7.0以上swoole扩展

    这通常涉及下载Swoole的源代码,配置编译选项,然后编译和安装。 以下是更详细的Swoole扩展知识: 1. **Swoole的核心特性**: - **事件驱动**:Swoole基于事件驱动模型,利用非阻塞I/O和异步编程,极大地提高了...

    php7及以上版本 swoole扩展

    - 安装Swoole扩展通常需要通过编译源码来完成,这涉及到下载Swoole的源代码包(如`swoole-2.2.0`),然后使用PHP的配置工具`phpize`进行编译和安装。 - 在`php.ini`配置文件中启用Swoole扩展,通过添加`extension=...

    Swoole-loader扩展安装图文教程 Swoole扩展文件下载

    7. **实际应用**:Swoole Loader扩展使得你可以更灵活地在项目中加载自定义的类和函数,加速应用性能。例如,你可以使用Swoole的异步任务处理、协程(Coroutine)功能来优化高并发场景下的代码执行。 至此,你已经...

    swoole-4.4.8.tgz

    具体到压缩包中的文件,`package.xml`通常包含了项目的元数据,如版本信息、依赖库等,这对于安装和管理Swoole扩展非常有用。而`swoole-4.4.8`目录则包含了该版本的源代码,我们可以在此基础上进行编译安装或进一步...

    swoole4.x框架

    4. TCP/UDP 服务器:除了 HTTP,Swoole 还能用于构建 TCP 和 UDP 服务,广泛应用于即时通讯、数据传输等场景。 5. 定时器:内置定时器功能,可用于执行周期性任务,如心跳检测、任务调度等。 6. TCP 长连接:支持...

    swoole+redis+php+html5+js实现简单的群聊

    在本项目中,"swoole+redis+php+html5+js实现简单的群聊" 是一个使用现代Web技术构建的实时通信应用。这个应用程序利用Swoole作为服务器端的高性能扩展,Redis作为数据存储,PHP作为后端处理语言,HTML5作为前端展示...

    swoole-4.6.7.tgz

    在解压的swoole-4.6.7目录中,这个文件可以帮助我们了解Swoole的构建过程和依赖,以便于在自己的环境中正确安装和配置。 总的来说,Swoole为PHP开发者提供了全新的开发模式,通过协程、异步编程,以及强大的网络...

    SWOOLE聊天室.zip

    本篇文章将深入探讨如何利用Swoole开发一个简单的Web聊天室,以及它背后的原理和技术要点。 首先,我们要理解Swoole的核心特性。Swoole是一款开源的PHP扩展,它提供了异步、非阻塞的网络I/O模型,极大地提高了PHP...

Global site tag (gtag.js) - Google Analytics