栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

swoole学习之进程,内存和协程

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

swoole学习之进程,内存和协程

进程,内存和协程 一、进程 1.1 进程

进程就是一个程序==正在运行==的实例

$process = new swoole_process(function (swoole_process $pro){
$pro->exec("/home/work/study/soft/php/bin/php",[__DIR__.'/'.'../server/http_server.php']);
},false);
$pid = $process->start();
echo $pid.PHP_EOL;
swoole_process::wait();

以树状图显示进程之间的关系命令

pstree -p 进程ID

启动成功后会创建一个master进程,2个manager进程,8个worker子进程,根据自己的设置

1.1.2 进程的使用场景

1.1.2 代码实现
echo "process-start-time:".date("Ymd H:i:s");
$workers = [];
$urls = [
    'https://baidu.com',
    'https://sina.com.cn',
    'https://qq.com',
    'https://baidu.com?search=singwa',
    'https://baidu.com?search=singwa1',
    'https://baidu.com?search=singwa2',
];
//创建多个子进程分别模拟请求URL的内容,同步进行
for($i = 0; $i < 6; $i++){
    $process = new swoole_process(function(swoole_process $worker) use($i,$urls){
$content = curlData($urls[$i]);
//将内容写入管道
 $worker->write($content.PHP_EOL);
    },true);

    $pid = $process->start();
    $workers[$pid] = $process;
}

//获取管道的内容
foreach ($workers as $process){
    echo $process->read();
}


function curlData($url){
    sleep(2);
    return $url . 'success'.PHP_EOL;
}
echo "process-end-time:".date("Ymd H:i:s");
二、内存

内存操作之模块==table==

使用场景:swoole_table一个基于共享内存和锁实现的超高性能,并发数据结构。用于解决多进程/多线程数据共享和同步加锁问题。==进程结束后内存会自动释放==

$table  = new swoole_table(1024);
$table->column('id', $table::TYPE_INT, 4);
$table->column('name', $table::TYPE_STRING, 64);
$table->column('num', $table::TYPE_FLOAT);
$table->create();
$table->set('yfyjsz', ['id' => 1, 'name' => 'test1', 'num' => 20]);
$table['singwa'] = ['id'=>2,'name'=>'singwa','num'=>123]; //和set一样
$table->incr('singwa','num',2); //原子自增
print_r($table['singwa']);
print_r($table->get('yfyjsz'));
三、协程

进程,协程,线程区别

$http = new swoole_http_server('0.0.0.0',9503);
$http->on('request',function ($request,$response){
    $redis = new SwooleCoroutineRedis();
    $redis->connect('127.0.0.1', 6379);
    $val = $redis->get($request->get['a']);
    $response->header('Content-type','text/plain');
    $response->end($val);
});
$http->start();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/227511.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号