PHP

さくらレンタルサーバーとかで制限以上のクロンタブ(crontab)を使う方法。

さくらレンタルサーバーとかで制限以上のクロンタブ(crontab)を使う方法
10年ぐらいまえのコードを見直して改善したコードが下記になります。
10年前はクラスを使わない方法で構築したのだけど、今回はクラスの概念を
使って構築。ここ何年かで自分のコーディングの技術は上がっているかといえば
そうでもないですが、昔よりかは技術の幅は広がっていると思いたいw
※qiita日付は数年前にUPしたのですけど、コード自体は10年前のコードです。

 

<?php
//五分置きのクロンを走らせてください。
//php5.6以上推奨? エラーの場合:explodeを見直してください 
class cronphp2{
    
    public $set = array(
            array("file"=>"/home/tool/test1.php","year"=>"*","month"=>"*","day"=>"*","hour"=>"*","minute"=>"*"),
            array("file"=>"/home/tool/test2.php","year"=>"2018","month"=>"7","day"=>"7","hour"=>"*","minute"=>"*/10"),
            array("file"=>"/home/tool/test3.php","year"=>"*","month"=>"*","day"=>"7","hour"=>"7","minute"=>"7")
        );
    
    
    function __construct(){
        if(is_array($this->set)){
            foreach ($this->set as $key => $value) {
  
                    if(!$this->chk($value["year"],"year"))continue;
                    if(!$this->chk($value["month"],"month"))continue;
                    if(!$this->chk($value["day"],"day"))continue;
                    if(!$this->chk($value["hour"],"hour"))continue;
                    if(!$this->chk($value["minute"],"minute"))continue;
                    if(!$value["file"])continue;       
                    $h = @shell_exec("/usr/local/bin/php -f ",$value["file"]);
                    print $value["file"];
                    var_dump($h);
                
            }
        }
    } 
    
    function chk($q1="",$q2=""){

        if(!$q1)return false;
        if(!$q2)return false;
        switch ($q2) {
            case "year":
            case "month":                
            case "day":   
                $ren = array("year"=>"Y","month"=>"n","day"=>"j");
                if($q1==="*"){return true;}
                if(is_numeric($q1)){
                    if((int)$q1 == date($ren[$q2])){return true;}
                }else{
                    return false;
                }
                break;
           case "hour":
           case "minute":
                $ren = array("hour"=>"H","minute"=>"i");
                if($q1==="*"){return true;}
                if(is_numeric($q1)){
                    if((int)$q1 == date($ren[$q2])){
                        return true;
                    }else{
                        return false;
                    }
                }else{
                    if(preg_match("/\*\//",$q1)){
                        $q = explode("*/",$q1)[1];
                        if(date($ren[$q2])%(int)$q==0){
                            return true;
                        }else{
                            return false;
                        }                       
                    }
                    return false;
                }
                break;
            default:
                return false;
                break;
        }
        
        return false;
     }
}
$crn = new cronphp2();

The following two tabs change content below.
zip358と申します。 まったりWEB日誌を更新している中の人です? 趣味は映画鑑賞とブログ書きです、 こちらで生活できるようになるのが目標です。 ブックマークやシェアして頂けると励みになります。 どうぞよろしくお願い致します。

関連記事

  1. jquery

    都道府県にカーソルを乗せると色が変わるちょっとした奴ムフ。

    JSONファイル、JSファイル、htmlファイルはそれぞれ下…

  2. PHP

    WPの記事を検索し一括カテゴリ変更する方法。

    WPの記事を検索し一括カテゴリ変更する方法は下記になります。…

  3. プログラム

    xdebugの動作仕方が分からなかったのでメモ。

    Xdebugを動作させます。(F5)次にブラウザを開き動作…

  4. javaScript

    昔といまの変わらないプログラマーさん。

    簡単なコードをむかしはいろいろ調べながらプログラムを書いてい…

  5. プログラム

    σ(゚∀゚ )オレ的速報:基本情報技術者解答生成ツール

    σ(゚∀゚ )オレ的速報:基本情報技術者解答生成ツール4月…

2018年11月
 12345
6789101112
13141516171819
20212223242526
2728293031  

アクセスカウンター😅

とある高知県の気温や湿度

Twitter でフォロー

PAGE TOP