[PHP-users 19126]Re: タイムアウト

hash8931 @ mail.goo.ne.jp hash8931 @ mail.goo.ne.jp
2003年 11月 26日 (水) 12:14:55 JST


高橋です

> $html =file("http://www.xxxxx.xxx");
> 外部のページを読み込もうとした際、5秒まで待つことができれば
> 他の方法でも構いません。

ストレートな回答ではないのでおせっかいがましい話なんですが
外部のファイルを読み込むのを待つというのだと
どのくらいの時間がかかるのかは予測できない部分がありますので
読み込む動作と処理する動作を別々にしてみてはいかがでしょうか。
例えばこんなかんじ…

※ index.html
<html>
	<frameset rows="100,*">
		<frame src="loadfile.php" name="loadfile">
		<frame src="progress.php" name="progress">
	</frameset>
</html>

※ loadfile.php
<html>
	<body>
		ロードしています。<br>
	</body>
</html>
<?PHP
	ignore_user_abort (true);
	if($data=file("http://target_url/")){
		$fp=fopen("data.dat","w");
		fwrite($fp,implode("",$data));
		fclose($fp);
	}
?>

※ progress.php
<html>
	<?PHP
		if (file_exists("data.dat")){
			echo "<body>";
			echo "ファイルのロードが完了しました。";
			echo "</body>";
		} else {
			$time=((isset($_GET["time"]))?$_GET["time"]:0);
			if ($time<30) {
				echo "<head>";
				echo "<meta http-equiv=?"Refresh?" content=?"1;URL=progress.php?time=".($time+1)."?">";
				echo "</head>";
				echo "<body>";
				echo "ロード中 ".str_repeat("|",$time);
				echo "</body>";
			} else {
				echo "<body>";
				echo "タイムアウトによりロードに失敗しました。";
				echo "</body>";
			}
		}
	?>
</html>


PHP-users メーリングリストの案内