swoole_server->addProcess

22 篇文章 1 订阅

简介

添加一个用户自定义的工作进程。此函数通常用于创建一个特殊的工作进程,用于监控、上报或者其他特殊的任务。

https://wiki.swoole.com/wiki/page/390.html

Server

<?php
class Server
{
    private $serv;
    private $process;
    private $testProcess;
    public function __construct(){
        $this->serv = new swoole_server('127.0.0.1', 9501);//注意这里要用多进程模式,不填写默认是多进程
        $this->serv->set(array(
            'worker_num' => 4,
            'daemonize' => false,
            'backlog' => 128,
        ));
        $server = $this->serv;
        $this->process = new swoole_process(function($process) use ($server) {
            while (true) {//我猜测这里的一直循环,是不想浪费太多的资源,这里的资源暂时我还没有想到,想到后再更新。
                print_r("进程1\n");
                $msg = $process->read();//同步的,读取不到数据,就不往下执行.
                foreach($server->connections as $conn) {
                    $server->send($conn, $msg);
                }
            }
        });
        $this->testProcess = new swoole_process(function($testProcess) use ($server){
            while (true) {
                print_r("进程2\n");
                $msg = $testProcess->read();
                foreach($server->connections as $conn) {
                    $server->send($conn, $msg);
                }
            }
        }); 
        $this->serv->addProcess($this->process);
        $this->serv->addProcess($this->testProcess);
        $this->serv->on('Connect', array($this,'onConnect'));
        $this->serv->on('Receive', array($this,'onReceive'));
        $this->serv->on('Close', array($this,'onClose'));
        $this->serv->start();
    }


    public function onConnect(swoole_server $server, int $fd, int $reactorId){
        print_r($fd."--连接上了\n");
    }

    public function onReceive(swoole_server $server, int $fd, int $reactor_id, string $data){
        $this->process->write($data);
        $this->testProcess->write("123");
        print_r("主进程\n");
    }

    public function onClose(swoole_server $server, int $fd, int $reactorId){
        print_r($fd."--关闭了连接\n");
    }
}

new Server();


Client

<?php 

$client = new swoole_client(SWOOLE_SOCK_TCP);
if (!$client->connect('127.0.0.1', 9501, -1))
{
    exit("connect failed. Error: {$client->errCode}\n");
}
$client->send("我是发送的数据\n");

while (true) {
    $as = $client->recv();
    print_r($as."\n");
}


执行结果

这里写图片描述

这里写图片描述

仔细看客户端的运行结果和服务端的输出结果。

参考地址

https://wiki.swoole.com/wiki/page/390.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
swoole_loader72_nzts_x64是一个针对PHP语言的扩展库,用于提供高性能的异步网络通信能力。Swoole是基于C语言开发的,可以让PHP程序实现多进程、多线程、协程等高并发处理的特性。 swoole_loader72_nzts_x64是针对PHP 7.2版本的64位操作系统的扩展库。目前,PHP7已经在性能上有了很大的提升,而swoole_loader72_nzts_x64进一步增强了PHP的并发处理能力。64位操作系统的支持能够更好地利用内存资源,提高程序运行效率。 通过使用swoole_loader72_nzts_x64,可以方便地开发一些高性能的网络应用,比如服务器、Web服务、游戏服务器等。swoole_loader72_nzts_x64提供了一系列的API函数,可以轻松实现TCP/UDP服务器,WebSocket服务器,定时器等功能。 相比于传统的PHP开发方式,swoole_loader72_nzts_x64的优势主要体现在以下几个方面: 1. 高并发:采用多进程/多线程/协程模型,可以同时处理成千上万的并发连接,大大提高了执行效率。 2. 高性能:通过底层C/C++编写,性能优越,能够在高负载的情况下依然保持稳定的性能表现。 3. 异步IO:支持异步非阻塞IO操作,减少了等待时间,提高了性能。 4. 内存管理:有效控制内存的使用,避免了内存泄漏和垃圾回收导致的性能损失。 5.易于使用:提供丰富的API函数和文档,开发者可以快速上手并使用。 总之,swoole_loader72_nzts_x64是一个非常有用的PHP扩展库,可以帮助开发者轻松实现高性能的网络应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值