php 模拟并发请求_PHP模拟并发请求
原理:使用curl_init()創建多個請求實例,再使用curl_multi_init()批量執行創建的多個請求實例。
文件1:curl.php<?php
$threads=500;//并發請求次數
$url='http://blog.cn/index.php?';//請求的url
//創建一個未定義的curl句柄數組
$ch=array();
//創建批處理cURL的句柄
$mh?=?curl_multi_init();
//創建并發請求次數個url用于后面給curl分配
for?($i=0;?$i?
//有多少請求,創建多少curl會話
$ch[$i]=curl_init();
curl_setopt($ch[$i],?CURLOPT_URL,?$url.rand(1,1000));//隨機參數,避免緩存
curl_setopt($ch[$i],?CURLOPT_HEADER,?0);
//創建的會話分配給curl批處理句柄
curl_multi_add_handle($mh,$ch[$i]);
}
$running=null;
//所有的curl會話分配給$mh這個curl批量處理句柄來執行
do?{
usleep(10000);
curl_multi_exec($mh,$running);
}?while?($running?>?0);
//關閉已經創建的會話句柄
for?($i=0;?$i?
curl_multi_remove_handle($mh,?$ch[$i]);
}
//關閉批處理句柄
curl_multi_close($mh);
?>
文件2:index.php<?php
file_put_contents('1.txt',date('Y-m-d?H:i:s',time())."\r\n",FILE_APPEND?);
?>
文件3:1.txt2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:06
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
2017-07-30?22:30:07
基本同時請求的還是比較多的,受帶寬和CPU影響,多線程的訪問,并不是一定會同時,線程是否立即執行決定權是CPU
總結
以上是生活随笔為你收集整理的php 模拟并发请求_PHP模拟并发请求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ehcache使用_Mybatis整合(
- 下一篇: php显示doc文件乱码,如何解决php