さくらインターネットのcronはライトでは使えません。スタンダード・プラン以上で設定できます。

スタンダード・プランの場合、cronは5つまで設定できます。
(インターバル指定や日時指定もできますが...5個は少ないなあ)

インターバルの最小単位はminute。

ここでは、cronで15分ごとにPHPアプリを起動して、某サイトの更新状況をチェックしてみます。

ファイルの差分を抽出します。

PHPにはそういう気の利いた関数がないので、UNIXのコマンドを使ってみましょう。




PHPで某サイトのページをインターバルごとに2つのファイルとして保存し、比較をしています。

【getDiff.php】

A、B2つのパターンでファイルを作って比較。

ファイル比較では、UNIXのdiffコマンドを使っています。

差分があれば、テキスト形式で保存します。

<?php
    
    
    $filenameA = "gambaA";
    $timeA = 0;
    if(file_exists($filenameA)){ 
        $timeA = filemtime($filenameA); 
    }
    
    $filenameB = "gambaB";
    $timeB = 0;
    if(file_exists($filenameB)){ 
        $timeB = filemtime($filenameB); 
    }
    
    //古い方に書き込む
    if ($timeA != 0){
        if ($timeB == 0){
            $w_filename = $filenameB;
        } else{
            if ($timeA > $timeB){
                $w_filename = $filenameB;
            }else{
                $w_filename = $filenameA;
            }
        }
        
    }else{
        $w_filename = $filenameA;
    }
    
    
    $cont = file_get_contents("http://www.gamba-osaka.net/news/newsrelease.php?pageID=1");
    $fp = fopen($w_filename,"w");
    fputs($fp,$cont);
    fclose($fp);
    
    
    //比較
    if (($timeA != 0)&&($timeB != 0)){
        
        exec('diff '.$filenameA.' ' .$filenameB,$out);
        
        $diff = "";
        $len = count($out);
        if ($len != 0){
            for($i = 0;$i<$len;$i++){
                $diff .= $out[$i] . "\n";
            }
        }
        
        if ($diff != "") {
            $fp = fopen("diff","w");
            fputs($fp,$diff);
            fclose($fp);
            
            print("Diff");
        }else{
            print("Same");
        }
        
    }else{
        print("Same");
    }
    
?>





さくらインターネットのcronの設定パネルです。

実行コマンドは以下のようなフォーマット。

cd /home/<さくらのアカウント名>/www/<ディレクトリ名>;/usr/local/bin/php <実行するPHPファイル名>

意味は、「実行ファイルのあるディレクトリに移動して、ファイルを実行!」...です。

15分ごとに実行する場合の設定。