Swoole实时任务异步调用实例

php基于 swoole 实现的异步处理任务功能示例 主要介绍了php基于 swoole 实现的异步处理任务功能,涉及swoole的安装、配置及php调用swoole守护进程监控任务相关实现技巧,需要的朋友可以参考下 立即下载

服务端

新建Server.php(脚本执行),代码如下:

<?php  
class Server  
{  
    private $serv;  
  
    public function __construct()  
    {  
        $this->serv = new swoole_server("0.0.0.0", 9501);  
        $this->serv->set(array(  
            'worker_num' => 1, //一般设置为服务器CPU数的1-4倍  
            'daemonize' => 1, //以守护进程执行  
            'max_request' => 10000,  
            'dispatch_mode' => 2,  
            'task_worker_num' => 8, //task进程的数量  
            "task_ipc_mode " => 3, //使用消息队列通信,并设置为争抢模式  
            //"log_file" => "log/taskqueueu.log" ,//日志存放目录  
        ));  
        $this->serv->on('Receive', array($this, 'onReceive'));  
        // bind callback  
        $this->serv->on('Task', array($this, 'onTask'));  
        $this->serv->on('Finish', array($this, 'onFinish'));  
        $this->serv->start();  
    }  
  
    public function onReceive(swoole_server $serv, $fd, $from_id, $data)  
    {  
        //echo "Get Message From Client {$fd}:{$data}\n";  
        $serv->task($data);  
    }  
  
    public function onTask($serv, $task_id, $from_id, $data)  
    {  
          //在这里进行脚本执行处理操作
          echo $data;

    }  
  
    public function onFinish($serv, $task_id, $data)  
    {  
        //任务完成自动调用
    }  
  
  
}  
  
$server = new Server();  
  
}  
  
$server = new Server();  

客户端:

新建Client.php

<?php  
  
class Client  
{  
    private $client;  
  
    public function __construct()  
    {  
        $this->client = new swoole_client(SWOOLE_SOCK_TCP);  
    }  
  
    public function connect()  
    {  
        if (!$this->client->connect("127.0.0.1", 9501, 1)) {  
            throw new Exception(sprintf('Swoole Error: %s', $this->client->errCode));  
        }  
    }  
  //传输数据
    public function send($data)  
    {  
        if ($this->client->isConnected()) {  
          
            return $this->client->send($data);  
        } else {  
            throw new Exception('Swoole Server does not connected.');  
        }  
    }  
  
    public function close()  
    {  
        $this->client->close();  
    }  
}  
  
$data = array(  
    "params"=>"参数信息"
);  
$client = new Client();  
$client->connect();  
if ($client->send($data)) {  
    echo 'success';  
} else {  
    echo 'fail';  
}  
$client->close();
保存好代码,在命令行或者浏览器中执行Client.php,便实现了异步任务队列。
PHP Swoole异步读取、写入文件操作示例 主要介绍了PHP Swoole异步读取、写入文件操作,结合实例形式详细分析了php使用Swoole扩展异步操作文件读写的相关实现技巧,需要的朋友可以参考下 立即下载

相关推荐

DSP28335学习笔记——McBSP配置为SPI

由于28335硬件外设上只有一个SPI接口,所以当SPI接口不够用时,可以将McBSP配置为SPI接口。 参考28335的数据手册,当DSP为主机时,配置McBSP为SPI所用到的接线如下图所示。 另外总结一些调试过程中的经验。 1.传输数据位数的确定 由RCR1寄存器中的RWDLEN1和XCR1寄存器中的XWDLEN1决定。分别对应着接受和发送的位数,在配置成SPI模式的时候,这

捕虫少年 1万+

Swoole系列1.4(异步任务)

而 task_worker_num 则是根据我们的机器配置情况,以及要处理的任务情况来配置的,比如说我们这种简单的测试代码,就在 2核4G 的虚拟机上开几百上千个也不会有太大的影响。注意,我们现在是开了多个进程,不是在一个进程中,sleep() 中会阻塞当前 Task 进程,不会对返回页面的那个 Worker 进程以及其它的 Task 进程产生影响。输出的结果有疑问吗?好吧,再次转换你的思维。好了,扯了那么多,我们先来看看上面的代码的运行情况吧,同样的,启动你的这个 Http 服务,然后去浏览器请求一下。

d751323405的博客 405

香橙派5b 移植 imx415

修改设备树,以为例,关闭ov13855,添加imx4151;0;1;0;1;0;1;0;1;0;1;0;1;0;以此类推,修改三个dtsi。

ChenYX的博客 4543

swoole学习之: 执行异步任务

本文参考自 https://wiki.swoole.com/#/start/start_task, 内容有调整 执行异步任务 (Task) 在 Serv...

aben_sky的专栏 852

基于PLC智能立体车库控制系统设计

摘要 本系统设计以三层立体车库为研究对象,通过对立体车库的原理分析、动作流程设计和一系列的软硬件设计,达到立体车库自动化控制的目的。系统采用可编程控制器作为立体车库控制系统的控制单元,实现该系统的工艺要求,通过程序仿真调试,完成系统的各种动作要求,达到自动控制的目的。系统设计分为总体设计、硬件设计以及软件设计。按照立体车库控制系统的控制策略进行图纸设计;重点分析工艺流程图,对立体车库控制系统进行程序编译和MCGS上位机调试,通过系统的调试和修改,达到了基本控制的要求。系统设计明确了工艺要求,确定

DX884164131的博客 3600

【PCIe硬件】PCIe引脚PRSNT与热插拔

热插拔的基本目的是要让PCIe设备按照规定的顺序、原则,从系统中移除或插入到系统中来,并能正常的工作,且不影响系统的正常运行。事实上,PCIe“热插拔”的关键目的就是为前面面所提到的系统RAS服务的,是提升系统RAS能力的非常重要的手段!注意,这里有两个相关概念,前面我们讲的热插拔,其实是广义的“热插拔”。这里的Hot-Plug,为了方便,我们叫做PCIe热插拔,也就是我们现在及后面将要讨论的内容。

smartvxworks的博客 2808

php swoole ajax,还在用Ajax轮询完成即时通讯?看看Swoole吧

原标题:还在用Ajax轮询完成即时通讯?看看Swoole吧关键词:swooleswoole是什么?1.异步、并行、高性能2.纯C编写3.php扩展swoole能做什么?1.异步多线程服务器及客户端,2.异步MySQL、Redis、数据库连接池、任务队列3.http/websocket服务器/客户端4.异步文件读写5.Swoole2.0支持协程swoole应用到那里?互联网、移动通信、企业软件、云计...

weixin_29355333的博客 315

Google 二次签名 导致 Facebook , Google 登录失败

google 授权登录

xq610928的博客 1957

PHP异步编程框架Swoole的核心原理与应用实践

Swoole为PHP带来了革命性的变化,使其从传统的Web脚本语言进化为可以开发高性能网络服务的全能选手。构建百万级并发的网络服务开发实时通信和游戏后端实现高效的微服务架构处理大数据量和高并发场景虽然Swoole的学习曲线相对传统PHP更为陡峭,需要开发者掌握异步编程思维、多进程管理和内存控制等新概念,但所带来的性能提升和业务可能性是巨大的。从简单项目开始逐步掌握Swoole善用协程简化异步编程重视资源管理和内存泄漏问题合理配置参数针对业务优化。

MenzilBiz的博客 1596

银河麒麟编译libjpeg库并配置qt环境

银河麒麟下编译libjpeg库并配置qt环境验证

小米的修行之路 1015

XRoboToolkit —— 基于 PICO 4 Ultra 的机器人遥操作方案(一)

视觉-语言-动作模型(Vision-Language-Action models)的快速发展催生了对大规模、高质量机器人演示数据集的迫切需求。尽管遥操作是数据采集的主要方法,但现有方法存在可扩展性有限、设置流程复杂以及数据质量不佳等问题。本文提出XRoboToolkit,这是一个基于OpenXR标准的跨平台扩展现实(XR)机器人遥操作框架。该系统具备低延迟立体视觉反馈、基于优化的逆运动学算法,并支持多种跟踪模态,包括头部、控制器、手部及辅助运动追踪器。

2506_90492529的博客 3314

【Swoole系列2.5】异步任务

异步任务异步任务又是什么东西?在我们前面的学习中讲过一个全局变量的问题,当时我们给服务设置了一个 worker_num 属性,这是一个工作者进程的设置。设置了这个参数,然后启动 Swoole ,通过 ps 命令就可以查看到运行的程序多了几个进程。现在,你应该就能明白到了 Worker 其实就是一种子进程,或者叫工作进程。不过,我们今天要讲的是另一种进程形式,叫做 Task...

硬核项目经理 709

Winform从入门到精通(2)——Button(史上最全)

本文介绍winform中Button控件的详细用法,包括所有属性和事件

qq_34059233的博客 1万+

thinkphp5 异步调用方法_thinkphp5 swoole 执行异步任务

目录结构:服务器端:/**author:hdj*/namespace app\Console;use think\console\Command;use think\console\Input;use think\console\Output;class Websocket extends Command{protected $server;protected function configure...

weixin_39855658的博客 811

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

thinkphp5 异步调用方法_thinkphp5 swoole 执行异步任务

目录结构:服务器端:/**author:hdj*/namespace app\Console;use think\console\Command;use think\console\Input;use think\console\Output;class Websocket extends Command{protected $server;protected function configure...

weixin_39614521的博客 485

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

swoole调用php方法,swoole怎么异步调用

swoole怎么异步调用?Swoole中的异步使用测试案例:改写ws_server.php$this->ws->set(['worker_num' => 2,'task_worker_num' => 2,]);$this->ws->on("open", [$this, 'onOpen']);$this->ws->on("message", [$thi...

weixin_39830200的博客 285

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

PHP使用swoole来实现实时异步任务队列

看swoole的官方文档,真的很迷茫,文档里都是些零碎的点,这些点怎么串起来的,还得需要自己摸索。比如手册里将不同的进程分开来讲,但实际开发的过程中,使用却是一起使用的。比如任务队列。手册里的资料有一下几个地方 https://wiki.swoole.com/wiki/page/481.html https://wiki.swoole.com/wiki/page/134.html https:

shooke笔记 1万+

swoole同步和异步实例

TCP异步服务器: server.php <?php $serv=new swoole_server("127.0.0.1",9501); //创建TCP服务器 $serv->set(array('task_worker_num'=>4)); //设置异步进程工作数 //投递异步任务 $serv->on("receive",function($serv,$fd,$f...

426

Swoole 快速起步:Task 任务机制的使用

Task任务机制实际是 将耗时进程投递到异步调用事件Task中处理,从而不阻塞主进程; 以Swoole 快速起步:创建 WebSocket 服务器(聊天室)为例,在 WebSocket 服务器监听到新消息相应时,需要一些耗时的操作之后才将数据 send 给客户端,如果不使用Task任务机制时: // 监听 WebSocket 消息事件 $server->on('message', f...

Phplayers的博客 1203

swoole服务端与客户端 异步任务

服务端: 在Linux服务器上直接执行:php Server.php 打开长链接 <?php class Server { private $serv; public function __construct() { $this->serv = new swoole_server("0.0.0.0", 9501); $this->serv->set(array( 'worker_num' =&gt

是日已过,命亦随减的博客 271

php使用异步redis,PHP swoole和redis异步任务实现方法分析

本文实例讲述了PHP swoole和redis异步任务实现方法。分享给大家供大家参考,具体如下:redis异步任务interface.phpfor($i=0;$i<100;$i++){$msg = "zhezhao[".$i."]";$redis = new Redis();$redis->connect("127.0.0.1");$redis->publish("test",$...

weixin_39719427的博客 291

thinkphp5 swoole 执行异步任务

&lt;?php /* *author:hdj */ namespace app\Console; use think\console\Command; use think\console\Input; use think\console\Output; class Websocket extends Command{ protected $server; protecte...

dabao87的博客 4074

php Swoole实现毫秒级定时任务

项目开发中,如果有定时任务的业务要求,我们会使用linux的crontab来解决,但是它的最小粒度是分钟级别,如果要求粒度是秒级别的,甚至毫秒级别的,crontab就无法满足,值得庆幸的是swoole提供的强大的毫秒定时器。应用场景举例 我们可能会遇到这样的场景: 场景一:每隔30秒获取一次本机内存使用率 场景二:2分钟后执行报表发送任务 场景三:每天凌晨2点钟定时请求第三方接口,如果...

weixin_43814458的博客 1248

thinkphp5 异步调用方法_thinkphp5+swoole使用异步mysql和http请求

根据thinkphp官网的自定义指令来完成异步的mysql和http的请求;日常开发中一些大量的操作日志,可以通过异步扔进数据库,不用去等待thinkphp5.1+swoolw4.11,在application/console/创建一个Http.php...

weixin_39565390的博客 315

thinkphp5 异步调用方法_thinkphp5+swoole使用异步mysql和http请求-Go语言中文社区

根据thinkphp官网的自定义指令来完成异步的mysql和http的请求;日常开发中一些大量的操作日志,可以通过异步扔进数据库,不用去等待thinkphp5.1+swoolw4.11,在application/console/创建一个Http.php/***CreatedbyPhpStorm.*User:xiaoxie*Date:2018/11/9*Time:17:05**/n...

weixin_39550379的博客 386
上一篇: linux查看端口开启端口
下一篇: Linux如何查看进程、杀死进程、启动进程等常用命令
y_server
博客等级 码龄11年 6粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值