swoole深入学习 2. tcp Server和tcp Client

本文详细介绍了Swoole中的TCP Server和TCP Client的使用,包括同步和异步客户端的实现,以及server与client的交互过程。讲解了Master、Manager和Worker进程的角色与职责,并探讨了TaskWorker的使用场景和配置。最后,概述了Swoole的多线程Reactor+多进程Worker架构,帮助理解其处理连接的流程。
摘要由CSDN通过智能技术生成

swoole深入学习 2. tcp Server和tcp Client

标签(空格分隔): swoole


这节来学习Swoole最基础的ServerClient。会通过创建一个tcp Server来讲解。

server

<?php
class Server
{
    
    private $serv;

    public function __construct()
    {
    
        $this->serv = new Swoole\Server('127.0.0.1', 9501);

        //当启动一个Swoole应用时,一共会创建2 + n + m个进程,2为一个Master进程和一个Manager进程,其中n为Worker进程数。m为TaskWorker进程数。

        //默认如果不设置,swoole底层会根据当前机器有多少CPU核数,启动对应数量的Reactor线程和Worker进程。我机器为4核的。Worker为4。TaskWorker为0。 

        //下面我来设置worker_num = 10。看下启动了多少个进程

        $this->serv->set([
            'worker_num' => 10,
            //'task_worker_num' => 2,
            'deamonize' => true,
        ]);

        //启动10个work,总共12个进程。
        /*
        ➜  Event git:(master) pstree |grep server.php
    |   \-+= 54172 yangyi php server.php  #Master进程
    |     \-+- 54173 yangyi php server.php  # Manager 进程
    |       |--- 54174 yangyi php server.php  #Work 进程
    |       |--- 54175 yangyi php server.php
    |       |--- 54176 yangyi php server.php
    |       |--- 54177 yangyi php server.php
    |       |--- 54178 yangyi php server.php
    |       |--- 54179 yangyi php server.php
    |       |--- 54180 yangyi php server.php
    |       |--- 54181 yangyi php server.php
    |       |--- 54182 yangyi php server.php
    |       \--- 54183 yangyi php server.php
         *
         */

        //增加新的监控的ip:post:mode
        $this->serv->addlistener("::1", 9500, SWOOLE_SOCK_TCP);

        //监听事件
        /*
         *
         * - onStart
         * - onShutdown
         * - onWorkerStart
         * - onWorkerStop
         * - onTimer
         * - onConnect
         * - onReceive
         * - onClose
         * - onTask
         * - onFinish
         * - onPipeMessage
         * - onWorkerError
         * - onManagerStart
         * - onManagerStop
         */

        $this->serv->on('Start', array($this, 'onStart'));
        $this->serv->on('Connect', array($this, 'onConnect'));
        $this->serv->on('Receive', array($this, 'onReceive'));
        $this->serv->on('Close', array($this, 'onClose'));

        //master进程启动后, fork出Manager进程, 然后触发ManagerStart
        $this->serv->on('ManagerStart', function (\swoole_server $server){
    
            echo "On manager start.";
        });

        //manager进程启动,启动work进程的时候调用 workid表示第几个id, 从0开始。
        $this->serv->on('WorkerStart', function($serv, $workerId) {
    
            echo $workerId . '---';
        });

        //当一个work进程死掉后,会触发
        $this->serv->on('WorkerStop', function() {
    
            echo '--stop';
        });

        //启动
        $this->serv->start();
    }

    //启动server时候会触发。
    public function onStart( $serv ) {
    
        echo "Start\n";
    }

    //client连接成功后触发。
    public function onConnect( $serv, $fd, $from_id ) {
    
        $a = $serv->send( $fd, "Hello {$fd}!" );
        //var_dump($a); //成功返回true
    }

    //接收client发过来的请求
    public function onReceive( swoole_server $serv, $fd, $from_id, $data ) {
    
        echo "G
### 回答1: swoole_loader 72.so 是一个在 PHP 中使用的扩展库,它提供了对 Swoole 框架的支持。Swoole 是一个基于 PHP 的高性能并发网络通信框架,可以用于构建 Web 应用、API 接口服务、游戏服务等。 swoole_loader 72.so 是为 PHP 7.2 版本编译的 Swoole 扩展库。PHP 7.2 是 PHP 的一个版本,它在性能和安全性方面做了一些改进和优化。使用 swoole_loader 72.so 扩展库可以使 PHP 7.2 版本可以使用 Swoole 的功能。 Swoole 扩展库可以在 PHP 语言中实现异步、并发和高性能的网络编程。它提供了许多函数和类,如 ServerClient、Coroutine 和 Task 等,用于实现 TCP/UDP 服务器、WebSocket 服务器、多进程网络服务器等。通过使用 swoole_loader 72.so 扩展库,我们可以方便地在 PHP 7.2 中使用这些功能。 要使用 swoole_loader 72.so 扩展库,首先需要在 PHP 配置文件中启用该扩展。可以通过编辑 php.ini 文件或者在命令行中使用 -d 选项来指定加载该扩展。配置好后,就可以在 PHP 代码中使用 Swoole 相关的类和函数。 总结来说,swoole_loader 72.so 是一个用于 PHP 7.2 版本的 Swoole 扩展库,使得 PHP 7.2 版本可以使用 Swoole 框架的功能,实现高性能的并发网络通信。 ### 回答2: swoole_loader 72.so 是一个针对 PHP 开发的扩展模块,在使用 Swoole 高性能网络库时常用到。在Linux环境下,我们可以通过PHP扩展管理器安装该模块,并在 php.ini 文件中启用它。 swoole_loader 72.so 为 PHP 7.2 版本的扩展库,其中的 72 表示对应的 PHP 版本号。它提供了一些 Swoole 相关的函数和类,方便我们在 PHP 中使用 Swoole 进行高性能网络编程。 Swoole 是一个面向生产环境的 PHP 异步、并发网络通信引擎,常用于开发高性能的网络服务器和网络应用。它提供了丰富的网络编程接口,支持 TCP/UDP/Unix Socket 等多种协议,还包括了常用的异步客户端和服务器、进程管理、协程等功能。使用 Swoole 可以大大提高 PHP 程序的性能和并发处理能力。 要使用 swoole_loader 72.so,我们需要在环境中预先安装 PHP 7.2 版本。然后,将 swoole_loader 72.so 文件复制到 PHP 的扩展目录中,并在 php.ini 文件中加入以下内容: ``` extension=swoole_loader 72.so ``` 保存并退出 php.ini 文件后,重启 PHP 服务即可完成安装和启用 swoole_loader 72.so。 安装好 swoole_loader 72.so 这个扩展后,我们就可以在 PHP 代码中使用 Swoole 提供的相关函数和类了。通过调用这些接口,我们可以编写出高性能、高并发的网络应用程序。 总之,swoole_loader 72.so 是一个为 PHP 7.2 版本定制的 Swoole 扩展库,它是使用 Swoole 进行网络编程的基础。通过安装和启用该扩展,我们可以在 PHP 中享受到 Swoole 强大的网络编程能力,提升程序的性能和并发处理能力。 ### 回答3: swoole_loader72.so是一个用于Swoole扩展的动态链接库文件。Swoole是一种高性能的PHP扩展,可以用于构建协程和异步的网络应用程序。swoole_loader72.so文件用于在PHP中加载和调用Swoole扩展。 swoole_loader72.so文件是针对PHP版本为7.2.x的系统进行编译的。在安装Swoole扩展时,我们通常会根据自己的PHP版本选择相应的swoole_loader.so文件进行加载。 要使用swoole_loader72.so文件,我们首先需要确保PHP的7.2.x版本已正确安装并配置。然后,我们将swoole_loader72.so文件复制到PHP的扩展目录中,并在php.ini配置文件中添加相应的扩展设置,以启用Swoole扩展。 启用Swoole扩展后,我们可以在PHP代码中使用Swoole提供的各种功能,如创建协程、进行异步网络通信、处理WebSocket等。通过加载swoole_loader72.so文件,PHP可以找到和调用Swoole的相关函数和类,从而实现高性能的异步和协程编程。 总之,swoole_loader72.so是用于加载Swoole扩展的动态链接库文件,适用于PHP 7.2.x版本的系统。加载该文件后,我们可以在PHP中使用Swoole扩展提供的功能,实现高性能的异步和协程编程。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值