いつもお世話になってます。
毎週日曜日22:00に特定のデータを初期化するようなものを作りたいのですが、
何か良い方法はないでしょうか。
PHPで、「前回のアクセス日時と、今回のアクセス日時の間に、日曜日22:00が含まれている」時に処理を実行するスタイルを思いつきましたが、いまいちコードのイメージが沸いてきません。
strtotimeの引数で「last Sunday 22:00」としてみましたが、この場合だと日曜日の22:01~23:59の間にアクセスすると先週の日曜日22:00のタイムスタンプを返されてしまいました。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
通常、定期的に作動させるプログラムはLinuxではcronを使います。
サーバの時計で日曜日の22:00丁度にプログラムを走らせる事が出来ます。
Windowsではタスクスケジューラですね。
例えばcronの場合は
0 22 * * 0 wget http://localhost/hogehoge.php
のように登録しておけば毎週日曜日の22時丁度にhogehoge.phpが作動されます。
もっと厳密でなくても、アクセスがあった時で良い、と言う事でしたら、簡単なプログラムで実装出来ると思います(今回はそのようですね)。
> 前回のアクセス日時と、今回のアクセス日時の間に、日曜日22:00が含まれている
と言うより、
> 前回のアクセス日時は直前の日曜日の22:00より前
であった時に初期化されれば良いのではないでしょうか。
アクセスログファイルを alog.txtとし、そこにUNIX TIMEでログを更新しているとすれば、こんな感じで良いのではないでしょうか。
<?php
$fname = "alog.txt";
$lastAccess = file_get_contents($fname);
$w = (date("w") == 0 && date("G") < 22 )? 7 : date("w");//日曜日の22時以前だけは先週なので7
$lastSundayTime = mktime(22,0,0,date("m"),date("d")-$w,date("Y"));
if($lastAccess < $lastSundayTime){
//初期化
}
file_put_contents($fname, time());//アクセスログ更新
?>
お返事ありがとうございます。
とても実用的なソースコードを載せていただいてありがとうございます。
頭の中ではとても複雑に条件式を組み込んでいたのにこんなに簡単に実現できるなんて驚きです。
本当にありがとうございました。
No.1
- 回答日時:
初期化処理は、
A)WEB上で実行する
B)バッチ処理で実行する
C)DBのプロシジャを実行する
どんな形をお考えでしょうか?
B)C)については、それぞれの実行ファイルをタスクスケジューラに登録し、日曜22時を指定すれば可能です。
A)については、キーロガーツール(UWSCなど)
http://www.vector.co.jp/magazine/softnews/060627 …
で、実際の操作を記録・保存し、あとは、B)C)同様にタスクスケジューラに登録すれば、日曜22時に保存されている操作を再生してくれます。
お返事ありがとうございます。
Web上で実行する形を想定していました。
レンタルサーバー上のデータを初期化したいので、バッチ処理は無理そうだったのでPHPでなんとか「さも自動であるかのように」初期化したかったのです。
説明不足で申し訳ありませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(恋愛相談) 私は21歳の女で精神疾患があります。 今月からアルバイトを日曜火曜木曜の週三日で始めましたが、2週間 5 2022/10/16 06:32
- その他(恋愛相談) 日程打診してきたのに、その日に自分の予定入れる人 6 2022/06/07 00:40
- その他(恋愛相談) 毎週土曜日か日曜日にえっちしてて昨日は遊びに行ってて終電でお互い帰ったから今日えっちできると思って期 1 2023/04/24 00:08
- 浮気・不倫(結婚) 付き合って3年たつ10歳年下の彼がいます。 毎日たわいもないLINEをどちらからともなく、この付き合 3 2022/09/11 21:53
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- 飲食店・レストラン 焼肉店バイト 1 2022/10/27 12:59
- カップル・彼氏・彼女 広告代理店ってそんなに忙しいんですか?営業ではなくて、広告を作ったりする部署ならしいのですが、広告代 2 2022/03/26 07:26
- カップル・彼氏・彼女 付き合って2週間ほどの彼女に、会いたいと言っても、時間を作ってくれません。 彼女は、その理由を「恋愛 4 2022/11/09 20:01
- 片思い・告白 [質問] 初デート後のLINEについて 相手からすぐに「今日はありがとう!帰り気をつけてね」とLIN 6 2023/03/27 08:53
- Visual Basic(VBA) 祝日を除いた月曜から土曜までの1週間分の日付行を選択し、別シートへカットアンドペーストしたい 13 2023/07/13 22:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルスクリプトをPHPで動かそ...
-
phpからエクセルのマクロを実行...
-
php実行中に実行中のphpファイ...
-
別サーバのプログラムを起動
-
eclipseのlocalhostの設定について
-
ヒアドキュメントの中で演算子...
-
【PHP】命令は記述順に処理...
-
mysql複数レコードをまとめて削...
-
PHP フォルダ名やファイル名に0...
-
PHPからCプログラムを実行して...
-
JSのWINOW.CONFI...
-
PHPからlhaコマンドを使いたい
-
PHPの特徴は
-
PHPファイルをcronで実行す...
-
フォントの色を変えるには?
-
PHPのWARNINGをcatchするには
-
onedrive にexcelファイルをア...
-
PHP8を使うと、大量のWarningが...
-
バッチを用いたフォルダの自動移動
-
CSV出力にHTMLが入ってしまう
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysql複数レコードをまとめて削...
-
php実行中に実行中のphpファイ...
-
phpからエクセルのマクロを実行...
-
ヒアドキュメントの中で演算子...
-
PHPからバッチファイルの実行
-
【PHP】命令は記述順に処理...
-
シェルスクリプトをPHPで動かそ...
-
Switch文における、returnとbre...
-
httpdのプロセスが自動で消えな...
-
copy() で属性保存
-
Prompt入力値をphp変数として取...
-
JSのWINOW.CONFI...
-
htmlでsubmitで指定したAction...
-
unix(freebsd)でmysqldumpコマ...
-
PHPのsystem()でjava
-
別サーバのプログラムを起動
-
PHPでコマンドプロンプトを実行...
-
社内LANで複数台のPCからApache...
-
PHPからCプログラムを実行して...
-
PHPで、C#のプログラムを実行す...
おすすめ情報