您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP stream_set_timeout有什么用

2024/2/22 14:11:10发布18次查看
在php中,函数stream_set_timeout作用于读取流时的时间控制,并且stream_set_timeout需要配合stream_get_meta_data才能使用。
php stream_set_timeout有什么用?
php函数stream_set_timeout(stream functions)作用于读取流时的时间控制。fsockopen函数的timeout只管创建连接时的超时,对于连接后读取流时的超时,则需要用到 stream_set_timeout函数。
由于国内的网络环境不是很稳定,尤其是连接国外的时候,不想程序出现fatal error: maximum execution time of 30 seconds exceeded in …的错误,该函数尤其有用。
stream_set_timeout需配合stream_get_meta_data使用,如果没有timeout, stream_get_meta_data返回数组中time_out为空,反之为1,可根据此判断是否超时。另外由于php默认的maximum execution time为30秒,这是一次执行周期的时间,为了不出现上述的fatal error,还需要设置一个总的读取流的时间,具体方法参见下面详细代码。
$server="www.yahoo.com"; $port = 80; $data="get / http/1.0rn"; $data.="connection: closern"; $data.="user-agent: mozilla/4.0 (compatible; msie 6.0; windows nt 5.1)rnrn"; $start_time = time(); $fp=fsockopen($server, $port, $errno, $errstr, 5); if (!$fp) { die("connect timeout.n"); } else { stream_set_blocking($fp, true); stream_set_timeout($fp, 3); fputs($fp, "$data"); while (!feof($fp)) { $text .= fread($fp, 2000); $diff = time() - $start_time; if ($diff > 24) { die("timeout!n"); } $status = stream_get_meta_data($fp); if ($status[’timed_out’]) { die("stream timeout!n"); } } } fclose($fp);
更多相关知识,请访问!
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product