两个简单的并发测试方案
发现项目里边经常有并发测试的需求,就记录两条,免得每次都重写。bash的方案主要是方便在Linux下调试,php方案主要是方便在非Linux的操作系统下调试。
Linux bash实现
#!/bin/bash
for ((i=0;i<100;i++));do
{
#并发测试代码可放这儿
echo $i>>aa && echo $i
}&
done
wait
cat aa|wc -l
rm aa |
#!/bin/bash
for ((i=0;i<100;i++));do
{
#并发测试代码可放这儿
echo $i>>aa && echo $i
}&
done
wait
cat aa|wc -l
rm aa
php方案
#!/usr/bin/php5
<?php
$n = 10; // 并发条数
$ch = array();
for($i=0; $i<$n; $i++) {
$ch[$i] = curl_init();
$m = microtime();
curl_setopt($ch[$i], CURLOPT_URL, "http://www.fengdingbo.com?concurrency_test");
curl_setopt($ch[$i], CURLOPT_HEADER, 0);
}
$mh = curl_multi_init();
// 增加n个句柄
foreach ($ch as $v) {
curl_multi_add_handle($mh,$v);
}
$running=null;
// 执行批处理句柄
do {
curl_multi_exec($mh,$running);
} while($running > 0);
// 关闭全部句柄
foreach ($ch as $v) {
curl_multi_remove_handle($mh, $v);
}
curl_multi_close($mh);
/* End of file */ |
#!/usr/bin/php5
<?php
$n = 10; // 并发条数
$ch = array();
for($i=0; $i<$n; $i++) {
$ch[$i] = curl_init();
$m = microtime();
curl_setopt($ch[$i], CURLOPT_URL, "http://www.fengdingbo.com?concurrency_test");
curl_setopt($ch[$i], CURLOPT_HEADER, 0);
}
$mh = curl_multi_init();
// 增加n个句柄
foreach ($ch as $v) {
curl_multi_add_handle($mh,$v);
}
$running=null;
// 执行批处理句柄
do {
curl_multi_exec($mh,$running);
} while($running > 0);
// 关闭全部句柄
foreach ($ch as $v) {
curl_multi_remove_handle($mh, $v);
}
curl_multi_close($mh);
/* End of file */
这个测试能 代表什么呢??
这个真的能测试并发????
这里有些测试缺点,其一 PHP curl 本身就是个消耗很过分的功能,就算请求的代码是简单的json 也会因为 curl的不确定而变得不确定。为此所测试并发数据也不能作为有力地参考。其二 PHP的高并发的时候本就不如 ,Java pythonc 怎么稳定,用 php 做 提力工具在这只 能仁者见仁智者见智了