文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>php socket超时问题

php socket超时问题

时间:2008-02-27  来源:lifu999


问题一:  在Windows下fsockopen超时问题。 看下面部分代码:
   
     $fp = fsockopen("192.168.1.127", 6800);
     if (!$fp)
     {
       die("alert('连接服务失败!');window.opener=null; window.close();");
     }

   
    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("alert('连接服务失败!');window.opener=null;  window.close();");
  }


  fwrite($fp, "test");
  $ret  = "\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;
    }
  }

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

相关阅读 更多 +
排行榜 更多 +
XLM币最具爆发力的安全交易所币安binance下载

XLM币最具爆发力的安全交易所币安binance下载

金融理财 下载
XEM币最安全隐私链的全球交易所币安binance下载

XEM币最安全隐私链的全球交易所币安binance下载

金融理财 下载
WAVES币最新上线的优质交易所币安binance下载

WAVES币最新上线的优质交易所币安binance下载

金融理财 下载