swoole使用异步进程通信
2024-10-08 19:08:30
$process = new swoole_process(function($pro){
$pro->exec('//linux中的php命令所在绝对路径', ['//执行文件绝对路径']);
}, false);
$process->start();//开启进程
swoole_process::wait();//通过 #pstree -p Pid 进行查看线程间的关系
#####################################分隔符#################################################
用多进程执行多请求
//模拟请求多网站的数据
echo 'start time : ' . date('H:i:s') . PHP_EOL;
$workers = [];
$urls = [
'https://baidu.com',
'https://sina.com.cn',
'https://bilibili.com',
'https://pipigui.cc',
'https://www.swoole.com',
'https://wiki.swoole.com',
];
$url_counts = count($urls);
for($i = 0; $i < $url_counts; $i++ ){
//创建线程请求
//当创建线程的第二个参数为true时,数据存储在线程间的管道中,不打印出来,为非阻塞模式
//为false为阻塞,为同步执行
$process = new swoole_process(function($pro) use($i , $urls){
$content = curlData($urls[$i]);
// echo $content . PHP_EOL;
$pro->write($content . PHP_EOL);
},true);
$process->start();
$workers[] = $process;
}
//打印出存在管道的数据
foreach($workers as $process){
echo $process->read();
}
//模拟curl请求
function curlData($url){
sleep(1);
return $url . ': request success' ;
}
echo 'end time : ' . date('H:i:s') . PHP_EOL;
最新文章
- FilenameFilter过滤文件名
- SSH面试题收藏
- JavaScript常用小技巧
- [git]用pelican搞一个自己的blog(已完成)
- div图片垂直居中 如何使div中图片垂直居中
- asp.net解决:当前上下文中不存在名称“Session”
- 杭电ACM2011--	多项式求和
- cp 命令参数
- java学习笔记 (7) —— 实现简单的上传处理
- android——写xml
- table新增空白行到首行
- .NET Exceptionless 日志收集框架本地环境搭建
- 基于canvas图像处理的图片 灰色图像
- New Roads CodeForces - 746G (树,构造)
- webservice 基本要点
- 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
- MySQL锁之二:锁相关的配置参数
- git基本操作若干
- docker下搭建gitlab
- JavaScript跨域调用基于JSON的RESTful API