PHPでcronを再現してみる
この記事は書かれてから3年3ヶ月以上経っています。cronというかキャッシュというかそんな感じの昨日をPHP再現してみる
XREAでは偶然(cronの存在すら知らなかったから本当に偶然)
対応していたので問題なかったけど、
チカッパやロリポはどうも対応して無いみたいなので
PHPで再現する方法を考えてみようかと思う
パッと思いついた方法は、
誰かがアクセスしたときに出力のキャッシュと
キャッシュの有効期限の時刻を書いたファイルに入れて
次にアクセスした場合その時刻を超えていなければ
キャッシュを表示、超えていれば↑と同じことをする、、、みたいな
<?php
$filename = "text";
$fp = fopen($filename, "r");
$batnh = fgets($fp);
fclose($fp);
$accese_time = date(ymdH);
print ($accese_time);
if($batnh <= $accese_time){
/* 好きに書く */
$batnh = $accese_time +1;
print ("$batnh");
$fp = fopen($filename, "w");
fwrite($fp, $batnh);
fclose($fp);
}
else{
}
?>
cache.php
単純に年月日時を繋げて書いてみたやつ
基本的にはこれでいいんじゃないかなぁ
ただかなりアバウトに判定してるからうまくいかない事がありそう
<?php
$filename = "./text2";
$fp = fopen($filename, "r");
$batnh = fgets($fp);
fclose($fp);
$accese_time_y = date(Y);
$accese_time_y_1 = $accese_time_y/4;
$accese_time_y = $accese_time_y - $accese_time_y_1;
$accese_time_z = date(z);
$accese_time_H = date(H);
$accese_time = $accese_time_H + ( $accese_time_z * 24 ) + ( $accese_time_y * 24 * 365 ) + ( $accese_time_y_1 * 24 * 366 );
print ($accese_time);
if($batnh <= $accese_time){
/* 好きに書く */
$batnh = $accese_time +1;
print ("$batnh");
$fp = fopen($filename, "w");
fwrite($fp, $batnh);
fclose($fp);
}
else{
}
?>
cache2.php
一時間を一にして計算してみた例
閏年も一応計算したからなんとかなってるのかな。。。?
ただこの後すぐにもっと簡単で便利で正確なのが思いついたから
これを使うことは無いかも
<?php
$filename = "./text3";
$fp = fopen($filename, "r");
$batnh = fgets($fp);
fclose($fp);
$accese_time = date(U);
print ($accese_time);
if($batnh <= $accese_time){
/* 好きに書く */
$accese_time = $accese_time - date(s) - ( date(i) * 60 );
$batnh = $accese_time + ( 60 * 60 );
print ("$batnh");
$fp = fopen($filename, "w");
fwrite($fp, $batnh);
fclose($fp);
}
else{
}
?>
cache3.php
うん、分かってる普通に考えてこっちだよね
こっちなら簡単に↓こんな感じにすれば一時間以外の間隔にできるし(割り切れないと無理だけど)
$dateic = date(i) / 15 ;
$accese_time = $accese_time - date(s) - ( date(i) * 60 ) +$dateic *15 ;
見やすいし、、、なんでこっち先に気付かなかったんだろorz
同じトピックのエントリをすべて見る