Heim > Backend-Entwicklung > PHP-Tutorial > PHP stream_set_timeout有什么用

PHP stream_set_timeout有什么用

PHPz
Freigeben: 2020-09-05 09:31:44
Original
3345 Leute haben es durchsucht

在PHP中,函数stream_set_timeout作用于读取流时的时间控制,并且stream_set_timeout需要配合stream_get_meta_data才能使用。

PHP stream_set_timeout有什么用

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);
Nach dem Login kopieren

更多相关知识,请访问PHP中文网

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage