2011-12-13 22 views
1

ログを.txtファイルに入れ、定期的に(数秒ごとに)更新するプログラムがあります。ファイルサイズが変更されたときにページを更新する

PHPスクリプトでこの.txtのファイルサイズを確認し、変更された場合はページを更新したいと思います。

これは期待通りに動作しない、私が書いたものである:

$filename = "log.txt"; 

if (file_exists($filename)) { 
    $dfile = filesize($filename); 
} 
echo $dfile; 

$c=0; 
while($c < 10) { 
if ($dfile !== filesize($filename)) {header("Location:http://127.0.0.1/parser.php");} 
else{usleep(2000000);} 
} 
+1

エコー後にヘッダーを実行する...実際の出力が送信される前にheader()を呼び出す必要があることを覚えておいてください。 – macjohn

+0

javascript、AJAXまたはsetTimeout( 'window.location.refresh()'、miliseconds )。 – Catalin

答えて

1

Sid Malani氏が言ったように、間違いなくあなたはAJAXを使うべきであると言っています。私はこの種のことが何らかの非同期ポーリングなしで実行できることを疑う。少なくともブラウザー環境では(ブラウザーの働きにより)、コンソール上ではそれほど難しくありません。

これを行う最も簡単な方法は、ログファイルが実際に変更されたかどうかにかかわらず、HTMLメタリフレッシュを使用してページを何秒も更新することです。

<head> 
    <meta http-equiv="refresh" content="20" /> 
</head> 

あなたはログはとにかく数秒ごとに更新していることがわかっている場合、彼らはサイズを変更したりしていない場合、あなたは彼らがとにかく持っていることを賭けることができるので、それは本当に、重要ではありません。

2

回送信ブラウザがリダイレクトまたはリフレッシュするために使用するあなたのヘッダー情報やメタデータは効果がありません。ブラウザはそれを1ページとして読み取り、残りのページを無視するためです。

代わりにajaxを使用して、バックグラウンドでphpを呼び出し、ファイルサイズの変更を確認してからブラウザの更新を呼び出す必要があります。