Photo by Anete Lusina on Pexels.com

制限付きのクロンを無限寿限無にする方法改正版

20251115

文字数[3014文字] この記事は4分46秒で読めます.

Logging

おはようございます.以前作ったコードを改修して、いまの自分が書いたらどうなるのだろうかと思って書いたコードをQiitaGithubにアップしました.書いてみて思ったのは、やはりコードは書けば書くほど進化していくのだなという事.

そして思うのはAIにはこのコードは今の所書けないような気がしています.典型的なコードでもなく洗練すぎたコードでもないので、書けそうにない.見る人がみるとこれは人が書いたコードだと分かるかなと思います.

そういうのがコレからは人が書いたコードというお墨付きを貰えるのではないかと思います.なので、ちょっと完璧なコードではないコードを書いて行こうと思います.仕事ではAIを使用することが今後多くなると思うけど、まだ次の職に付いていないので毎日コードを精進のために書いていきます.

過去記事はこちら

で、今回書いたソースコードはこちらになります.

<?php
class CronExpansion
{
    private $filepath = 'crontab.json';
    private $cronTabs = null;

    public function __construct()
    {
        $fileData = file_get_contents($this->filepath);
        $cronTabData = json_decode($fileData);
        $this->cronTabs =  !json_last_error() ? (object)$cronTabData : (object)[];
        return $this;
    }

    public function run(): object
    {
        $datetime = new DateTime();
        $dateData = explode(',', $datetime->format('m,d,H,i,w'));
        foreach ($this->cronTabs as $cronTab) {
            $i = 0;
            $flg = true;
            $command = null;
            $cronTabDatas = get_object_vars($cronTab);
            if (count($cronTabDatas) === 6) {
                foreach ($cronTabDatas as $key => $val) {
                    if ($flg) {
                        switch ($key) {
                            case 'command':
                                $command =  $val;
                                break;
                            case 'w':
                                if (!(int)$val[(int)$dateData[$i]]) {
                                    $flg = false;
                                    continue;
                                }
                                break;
                            default:
                                if (preg_match('/^\*\/[0-9]{1,2}$/u', $val)) {
                                    if (((int)$dateData[$i] % ((int)str_replace('*/', '', $val))) > 0) {
                                        $flg = false;
                                        continue;
                                    }
                                } elseif (preg_match('/^\*$/u', $val)) {
                                } elseif ((int)$dateData[$i] !== (int)$val) {
                                    $flg = false;
                                    continue;
                                }
                                break;
                        }
                    }
                    $i++;
                }
                if ($flg) {
                    //echo $command;
                    exec($command . " > /dev/null &");
                }
            }
        }
        return $this;
    }
}
(new CronExpansion)->run();

明日へ続く




3566番目の投稿です/53 回表示されています.

中の人🏠️

AIによるおすすめ記事

著者名  @taoka_toshiaki

※この記事は著者が40代後半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


タグ

AI, github, https, qiita, zipcomebeebbedeaeeafeadebeeaeeafbfeeaeabeebebebephpeahtml, アップ, いま, お墨付き, コード, こちら, こと, これ, コレ, ソース, そう, ため, よう, 今回, 今後, 仕事, 以前, 使用, 典型, 完璧, 改修, 明日, 毎日, 洗練, 精進, 自分, 記事, 進化, 過去,