0

ページがPHPで更新されたときにそれを検出する方法を考えていました。私はグーグルで物事を調査しましたが、何も見つかりませんでした。

私がやりたいのは、ページが更新されたときに特定の関数を呼び出すことです。コードを実行するためにcronジョブを実行します。

私はこのようなものが欲しい:

if (page updated) {
//functions
}
else
{
//functions
}

そのようなことができない場合は、少なくともページがPHPで更新されたことを検出する方法を知りたいと思います。助けてください!

4

3 に答える 3

6

file_get_contents()を使用してページのコンテンツを取得し、そこからMD5ハッシュを作成して、既存のハッシュと比較します。このハッシュを単純なファイルに保存することをお勧めします。

$contents = file_get_contents('http://site.com/page');
$hash     = file_get_contents('hash'); // the text file where the hash is stored
if ($hash == ($pageHash = md5($contents))) {
  // the content is the same
} else {
  // the page has been updated, do whatever you need to do
  // and store the new hash in the file
  $fp = fopen('hash', 'w');
  fwrite($fp, $pageHash);
  fclose($fp);
}

allow_url_fopenOnに設定することを忘れないでください。

于 2012-05-19T20:09:57.833 に答える
2

あなたが言ったように、1時間ごとまたは15分ごとなどにcronを実行できます。そのページにアクセスし、変更日を取得し、保存された値と比較し、異なる場合は何かを行う必要があります。明らかに、情報を更新し、ページの現在の日付を $last_set_date などに設定する必要があります。(データベースで行う必要があります)

この簡単なスニペットは、ページの最終更新時刻を取得します (このトピックに関する詳細情報: get_headers の PHP ドキュメント):

<?php
$url = 'http://www.example.com';
$h = get_headers($url, TRUE);
echo "LAST MODIFIED: ", $h["Last-Modified"];
?>

これを取得したら、好きな方法 (テキスト ファイル、データベース) に保存されている以前の値と比較して、異なるかどうかを確認するだけです。それがpage updatedスクリプトのチェックです。

コメントを通じてさらに明確化してください。回答の改善に努めます。

于 2012-05-19T20:23:50.170 に答える
0

ページがphpを使用して更新されたかどうかを単純に検出することはできません。代わりに、javascriptを使用してみてください。

ここでは、jquerylibrayが含まれていると仮定しました。

<script type="text/javascript">
     $( document ).ready( function(){
        $("#someElementInYourPageYouWannaWatch").change( function(){
          $.ajax({
            url:'http://yourwebsite.php/your_controller.php',
            ...
            success: function( response ){
              $("#someNotifyElement).html('updated');
            }
          });

        });
     });
</script>

そんな感じ :)

于 2012-05-19T20:08:27.400 に答える