多语言展示
当前在线:310今日阅读:176今日分享:34

解决php并发问题,以及并发效果对比,非curl

通过php的函数popen开启进程来简易解决并发问题
工具/原料
1

vim

2

linux

方法/步骤
1

通过普通的foreach循环获取网页数据'http://www.baidu.com',              'google'=>'http://www.google.com.hk',              'youku'=>'http://www.youku.com',              'sina'=>'http://www.qq.com');foreach($url as $k=>$v){        $buffer[$k] =  file_get_contents($v,0,null,0,512);}var_dump($buffer);$end = microtime_float();$times = $end - $start;$txt = 'start:'.$start.'\r\n'.'endtime:'.$end.'\r\n'.'times:'.$times.'\r\n';        file_put_contents('/home/wwwroot/default/test/time.txt',$txt,FILE_APPEND);?>

2

通过popen开启新的进程来获取数据'http://www.baidu.com',              'google'=>'http://www.google.com.hk',              'youku'=>'http://www.youku.com',              'sina'=>'http://www.qq.com');foreach($url as $k=>$v){  $urlarr[$k] = popen('php /home/wwwroot/default/test/geturl.php '.$v,'r');}foreach($urlarr as $k_k=>$k_v){  while(!feof($k_v)){    $buffer[$k_k] = fgets($k_v,4096);  }  pclose($k_v);}var_dump($buffer);$end = microtime_float();$times = $end - $start;$txt = 'start:'.$start.'\r\n'.'endtime:'.$end.'\r\n'.'times:'.$times.'\r\n';        file_put_contents('/home/wwwroot/default/test/time.txt',$txt,FILE_APPEND);?>

3

geturl.php页面代码为:#!/usr/bin/php

4

执行结果对比图发现,通过开启新进程php脚本执行的效率比用foreach执行的效率要高很多。

注意事项

开启php的 CLI模式

推荐信息