注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

phperwuhan的博客

记载一个phper的历程!phperwuhan.blog.163.com

 
 
 

日志

 
 

php socket超时问题  

2010-03-05 11:47:35|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

来源:http://blog.chinaunix.net/u1/50355/showart_484815.html

问题一:  在Windows下fsockopen超时问题。 看下面部分代码:

    <?

     $fp = fsockopen("192.168.1.127", 6800);

     if (!$fp)

     {

       die("<script>alert('连接服务失败!');window.opener=null; window.close();</script>");

     }

 

   

    fputs($fp, "test php");

    fclose($fp);

   ?>

  

   如果连接失败,不会弹出窗口,只显示下面信息:

Warning: fsockopen() [function.fsockopen]: unable to connect to 192.168.1.127:6800

 

 in D:\lif\php\process\p_cfg_map_query.php on line 18

Fatal error: Maximum execution time of 30 seconds exceeded in D:\lif\php\process\p_cfg_map_query.php on line 18

如果把$fp = fsockopen("192.168.1.127", 6800); 改为 $fp = fsockopen($sip, $sport, &$err_no, &$err_str, 10);

 

问题就解决了哦

 

问题二:  feof超时问题。 

 

 

  <?

   $fp = fsockopen("192.168.1.127", 6800, &$err_no, &$err_str, 10);

 

  if (!$fp)

  { 

     die("<script>alert('连接服务失败!');window.opener=null;  window.close();</script>");

  }

 

 

  fwrite($fp, "test");

  $ret  = "<?xml version='1.0' encoding='utf-8'?>\n";

   

  while(!feof($fp))

  {

     $ret .= fread($fp, 1024);

  }

  echo $ret;

  fclose($fp);

?>

 

上面程序老是出错,如下面信息

Fatal   error:   Maximum   execution   time   of   30   seconds   exceeded   

 

把 while(!feof($fp))

  {

 

    $ret .= fread($fp, 1024);

  }

 

代码改为下面的代码就解决问题了

 

  while(!feof($fp))

  {

    stream_set_timeout($fp, 2);

    $ret .= fread($fp, 1024);

    $info = stream_get_meta_data($fp);

    if ($info['timed_out']) {

      break;

    }

  }

 

主要是没有处理超时退出问题哦。

  评论这张
 
阅读(493)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017