php的流程控制语句(php基于 swoole 实现的异步处理任务功能示例)
类别:编程学习 浏览量:2360
时间:2022-01-23 02:38:30 php的流程控制语句
php基于 swoole 实现的异步处理任务功能示例本文实例讲述了php基于 swoole 实现的异步处理任务功能。分享给大家供大家参考,具体如下:
安装swoole:
下载官方swoole压缩包,解压进入目录
|
$ cd swoole # 进入 swoole 目录 $ phpize $ . /configure --with-php-config= /usr/local/php/bin/php-config #注意查看服务器上是否有这个路径 $ make && make install |
修改php.in文件
|
vi /usr/local/php/lib/php .ini |
增加如下内容
|
extension = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/swoole.so" // 版本不同路径可能不同 |
保存后重启php-fpm
|
$ /etc/init .d /php-fpm restart |
php -m 命令查看是否添加成功 成功则会看到有swoole模块
|
$ php -m |
服务端作为守护进程监控任务,新建server.php:
|
<?php $serv = new Swoole\Server( "127.0.0.1" , 9502); $serv ->set( array ( 'task_worker_num' => 4)); $serv ->on( 'Receive' , function ( $serv , $fd , $from_id , $data ) { $task_id = $serv ->task( "Async" ); echo "Dispath AsyncTask: id=$task_id\n" ; }); $serv ->on( 'Task' , function ( $serv , $task_id , $from_id , $data ) { echo "New AsyncTask[id=$task_id]" .PHP_EOL; $serv ->finish( "$data -> OK" ); }); $serv ->on( 'Finish' , function ( $serv , $task_id , $data ) { echo "AsyncTask[$task_id] Finish: $data" .PHP_EOL; }); $serv ->start(); |
用命令行模式打开
|
php server.php |
新建一个client.php
|
<?php $client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); $client ->on( "connect" , function (swoole_client $cli ) { $cli ->send( "GET / HTTP/1.1\r\n\r\n" ); }); $client ->on( "receive" , function (swoole_client $cli , $data ){ echo "Receive: $data" ; $cli ->send( str_repeat ( 'A' , 100). "\n" ); sleep(1); }); $client ->on( "error" , function (swoole_client $cli ){ echo "error\n" ; }); $client ->on( "close" , function (swoole_client $cli ){ echo "Connection close\n" ; }); $client ->connect( '127.0.0.1' , 9502); |
打开一个新的窗口命令行执行
|
php client.php |
执行完后会发现在server.php的窗口就会有信息输出
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/fangdong88/article/details/78050321
您可能感兴趣
- jqueryajax实现部分刷新(php+jQuery ajax实现的实时刷新显示数据功能示例)
- php上传图片视频代码(详解PHP素材图片上传、下载功能)
- 怎么用php开发验证码(PHP简单验证码功能机制实例详解)
- 排序算法口诀php(PHP快速排序算法实现的原理及代码详解)
- nginx 怎么搭建web服务器(Linux+Nginx+Php架设高性能WEB服务器)
- linux安装php目录路径修改(ubuntu环境下的php相关路径与修改方法)
- php时间戳是什么意思(php时间戳转换代码详解)
- php redis配置(php+redis实现消息队列功能示例)
- python微信红包代码(php生成微信红包数组的方法)
- php守护进程(什么是PHP7中的孤儿进程与僵尸进程)
- php实用工具(php常用的工具开发整理)
- php扩展安装示例(php扩展开发入门demo示例)
- thinkphp5 api开发(thinkphp5框架前后端分离项目实现分页功能的方法分析)
- php添加到数组的用法(详解PHP 7.4 中数组延展操作符语法知识点)
- php上传文件的要求(PHP 文件上传限制问题)
- php常用执行函数(PHP自动载入类文件函数__autoload的使用方法)
- 北京旅游攻略(北京旅游攻略5日游及其花费)
- 四川旅游攻略(四川旅游攻略自由行攻略)
- 上海迪士尼攻略(上海迪士尼攻略旅游)
- 哪里可以看熊猫(成都哪里可以看熊猫)
- oppo手机的三种录屏方法,你知道有哪些吗(oppo手机的三种录屏方法)
- 吉林神秘传染链跨省 传染源尚未找到,舒兰 封城(吉林神秘传染链跨省)
热门推荐
- css什么时候可以用百分比(浅谈CSS中的百分比)
- vue时间转换(vue如何动态实时的显示时间浅析)
- openstack为什么要脚本搭建(基于CentOS的OpenStack环境部署详细教程OpenStack安装)
- php教程微信支付技术(php微信扫码支付 php公众号支付)
- linux怎样查qt版本(Linux QT Kit丢失及Version为空问题解决方案)
- phpstudy8.0使用教程视频(phpstudy v8.1 Apache伪静态配置图文教程)
- dede网站地图模块(Dedecms中百度网站地图制作的方法图文教程)
- python处理所有异常(Python异常处理知识点总结)
- SQL Server批处理注意的事项
- dedecms标签插入时间(dedecms修改按tag标签显示全站相关内容的方法)