前提・実現したいこと
いつもお世話になっております。
前回、PHPでの日時比較の際にアドバイスいただいことを参考に今度は3時間おきにサーバーにあるtest.htmlのデータを更新したいと思っています。
色々と調べながら、動作については実現することができたのですがそもそもの考え方として下記1、2の方法はどちらが
適していますか?
もしくはもっと効率の良いスマートな書き方があるなどご教授いただければと思います。
※使用サーバーはCronが使えません。
考え方1:
$now(現在時刻)と$targetday(更新時刻)をDateTimeで取得しdiffで日時の差分を抽出して経過3時間以上ならファイルを更新する。
該当のソースコード
PHP
1$fname = "test.html"; 2$now = (new DateTime())->setTimeZone(new \DateTimeZone('Asia/Tokyo')); 3$targetday = (new DateTime('@' . strval(filemtime($fname))))->setTimeZone(new \DateTimeZone('Asia/Tokyo')); 4 5$dteDiff = $now->diff($targetday); 6 7if (($dteDiff->format("%H"))>3){ 8 echo '更新中'; 9 10} else{ 11 echo '3時間経過していません'; 12} 13
考え方2:
$now(現在時刻から3時間前をセットする)と$targetday(更新時刻)をDateTimeで取得し、$targetdayより$nowが大きかったら?(先の日時だったら?)更新する。
該当のソースコード
PHP
1$fname = "test.html"; 2$now = (new DateTime())->modify('-3 hours')->setTimeZone(new \DateTimeZone('Asia/Tokyo')); 3 4$targetday = (new DateTime('@' . strval(filemtime($fname))))->setTimeZone(new \DateTimeZone('Asia/Tokyo')); 5 6if ($now>$targetday) { 7 echo '更新中'; 8} 9
試したこと
どちらのコードも動くは動くのですが、teratailでアドバイスいただいたりネット検索などで調べながら書いているので正解がわかりません;
if文のあたりもシンプル過ぎてこれでいいのかと不安なので書き方がおかしい部分などご指摘、ご教授いただけるとありがたいです。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー