多线程 - PHP的curl_multi_init并发测试问题

查看:319
本文介绍了多线程 - PHP的curl_multi_init并发测试问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

    $query_arr = array();
    for ($k = 0;$k<5;$k++){//请问5代表的是什么?
        $query_arr[] = 'http://www.segmentfault.com/json';
    }
    for ($i = 0;$i<70;$i++){//请问70代表的是什么?
        $ch = curl_multi_init();
        $count = count($query_arr);
        $ch_arr = array();
        for ($j = 0; $j < $count; $j++) {
            $query_string = $query_arr[$j];
            $ch_arr[$j] = curl_init($query_string);
            curl_setopt($ch_arr[$j], CURLOPT_RETURNTRANSFER, true);
            curl_multi_add_handle($ch, $ch_arr[$j]);
        }
        $running = null;
        do {
            curl_multi_exec($ch, $running);
        } while ($running > 0);
        for ($l = 0; $l < $count; $l++) {
            $results[$l] = curl_multi_getcontent($ch_arr[$l]);
            curl_multi_remove_handle($ch, $ch_arr[$l]);
        }
        curl_multi_close($ch);
    }

请问代码中的5和70分别代表了什么?

解决方案

创建了5个网址(ps:这5个网址是相同的) 一共执行70次 ,也就是总共请求350次 可以理解为5个并发 执行350次
类似于ab的 ab -c 5 -n 350 http://www.segmentfault.com/json

不过curl_multi_init是IO复用的方式 和真实的压测接口还有一定的区别,可以去试试ab siege
或者用pthreads来执行脚本来做并发测试

这篇关于多线程 - PHP的curl_multi_init并发测试问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆