이 기사의 내용은 컬을 사용하여 멀티스레딩을 시뮬레이션하여 요청을 보내는 코드 예제에 관한 것입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
각 PHP 파일의 실행은 단일 스레드이지만 PHP 자체는 php-fpm 프로세스 사용과 같은 일부 다른 기술을 사용하여 다중 스레드 동시성을 달성할 수도 있습니다. 여기서는 멀티스레딩을 시뮬레이션하는 데 사용됩니다. PHP의 컬 멀티스레딩은 컬 멀티스레딩 동시 작업을 시뮬레이션하는 데모입니다.
//设置缓冲为0(也可以去php.ini设置) ini_set('output_buffering', 0); //打开输出缓冲区 ob_start(); //设置一个空数组 $curl_Arr=[]; //这里模拟20次请求 for($i=0;$i<20;$i++){ //开启curl连接 $curl_Arr[$i]=curl_init("http://XXXX/test.php"); //CURLOPT_RETURNTRANSFER 设置为1表示稍后执行的curl_exec函数的返回是URL的返回字符串,而不是把返回字符串定向到标准输出并返回TRUE; curl_setopt($curl_Arr[$i],CURLOPT_RETURNTRANSFER,1); } //创建批处理cURL句柄 $mh = curl_multi_init(); foreach($curl_Arr as $k => $ch){ //curl句柄入栈增加 curl_multi_add_handle($mh,$ch); } $active = null; while(count($curl_Arr)>0){ //发起curl_multi请求 @curl_multi_exec($mh,$active); foreach($curl_Arr as $k => $ch){ //获取句柄的返回值 if($result[$k]= curl_multi_getcontent($ch)){ //输出结果 echo "$result[$k]\n"; ob_flush(); //把被释放的数据发送到浏览器 flush(); //关闭该句柄 curl_multi_remove_handle($mh,$ch); unset($curl_Arr[$k]); } } } //关闭ouput_buffering机制 ob_end_flush(); //关闭"curl_mulit"句柄 curl_multi_close($mh);
test.php라는 서버에 요청한 PHP 페이지를 만들었습니다. 내용은 다음과 같습니다
#🎜 🎜 #1 sleep(10); 2 echo 'seccess';exit;
위 내용은 다중 스레드 요청을 시뮬레이션하기 위해 컬을 사용하는 PHP 코드 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!