• ベストアンサー

毎週日曜22:00に処理を実行したい

いつもお世話になってます。 毎週日曜日22:00に特定のデータを初期化するようなものを作りたいのですが、 何か良い方法はないでしょうか。 PHPで、「前回のアクセス日時と、今回のアクセス日時の間に、日曜日22:00が含まれている」時に処理を実行するスタイルを思いつきましたが、いまいちコードのイメージが沸いてきません。 strtotimeの引数で「last Sunday 22:00」としてみましたが、この場合だと日曜日の22:01~23:59の間にアクセスすると先週の日曜日22:00のタイムスタンプを返されてしまいました。 よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答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());//アクセスログ更新 ?>

mihosaku3
質問者

お礼

お返事ありがとうございます。 とても実用的なソースコードを載せていただいてありがとうございます。 頭の中ではとても複雑に条件式を組み込んでいたのにこんなに簡単に実現できるなんて驚きです。 本当にありがとうございました。

その他の回答 (1)

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

初期化処理は、 A)WEB上で実行する B)バッチ処理で実行する C)DBのプロシジャを実行する どんな形をお考えでしょうか? B)C)については、それぞれの実行ファイルをタスクスケジューラに登録し、日曜22時を指定すれば可能です。 A)については、キーロガーツール(UWSCなど) http://www.vector.co.jp/magazine/softnews/060627/n0606273.html​ で、実際の操作を記録・保存し、あとは、B)C)同様にタスクスケジューラに登録すれば、日曜22時に保存されている操作を再生してくれます。

mihosaku3
質問者

お礼

お返事ありがとうございます。 Web上で実行する形を想定していました。 レンタルサーバー上のデータを初期化したいので、バッチ処理は無理そうだったのでPHPでなんとか「さも自動であるかのように」初期化したかったのです。 説明不足で申し訳ありませんでした。

関連するQ&A

  • 先々週の日曜日。再来週の日曜日は

    先週の日曜日  last Sunday 先々週の日曜日  ? 次の日曜日   next Sunday 再来週の日曜日  ? ? がわかりません アルクで調べましたがどうかなと思い よろしくお願いします。      アルク 先々週の日曜日 a week ago last Sunday

  • 英語で「毎週日曜日に」と言いたいとき、

    英語で「毎週日曜日に」と言いたいとき、 ふつうは every Sunday とか on Sundaysと言いますが、 every week on Sunday や on Sunday every week という表現は英語として間違っているのでしょうか? どの表現も通じるとは思いますが、受験英語としてどうなのかが知りたいです。

  • 毎週日曜日every Sundayとon Sundays どちらでも全

    毎週日曜日every Sundayとon Sundays どちらでも全く同じ意味使い方ですか?なにかニュアンスが違いますか?

  • PHPのstrtotimeのようなものありますか?

    「2011/08/01(日)」という文字列が現在の時間より過去か未来かの 判断をしたいと思います。 PHPだと、 $yukou_time = strtotime("2011/08/01(日)"); $now_time = time(); if( $yukou_time > $now_time ) という感じでできたのですが、perlの場合、PHPのstrtotimeのような ものを見つけることができません。 お手数ですが、このような機能がありましたらおしえてください。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • ファイルアップロード時のタイムスタンプ

    PHPで画像ファイルをアップロードした際、 ファイルのタイムスタンプが更新されてしまいます。 あとで、アップされたファイルのタイムスタンプをみて処理させたいのですが 、タイムスタンプ(作成日時、更新日時)を更新させないでアップロードする方法はありますでしょうか。 アップロードする前のタイムスタンプをあらかじめ取得し、DBなどに登録しておいたほうがいいのかもしれませんが、できれば画像ファイルのタイムスタンプを更新させないでアップロードしたいです。

    • ベストアンサー
    • PHP
  • おうむ返しの方法

    例えば、「先週の日曜日にスカイツリーに行ってきました。」と言う日本語会話に対して、 「先週の日曜日にスカイツリーに行ってきたのですね。面白かった?」 と言う具合に、メールなどでは書く事多いですよね。 英語は良くわかりませんが、 I visited The Sky Tree Tower last Sunday. と書かれて、 You visited The Sky Tree Tower last Sunday. と書いたら(返したら)、どういう意味でしょうか? 「あなたは、先週の日曜日にスカイツリーに行きました。」と言う意味であることは間違いありませんが、 本当に、日本語で言うこの意味でのみ取られるのだとしたら、会話としてはおかしいですよね? 「え、ああ、確かに行ったよ。前のメールで俺がそう書いたんだが。」 みたいな話ですよね? 「え?なに?なにかあるの?」的な雰囲気も感じます。 こういう場合の、おうむ返しの「先週の日曜日にスカイツリーに行ったのですね。」は、 どういえばよいのでしょうか? メールの返信なので、I seeとかじゃなくて、質問通りおうむ返しの方法をお願いします。 「先週の日曜日にスカイツリーに行ってきたのですよね?」でもありませんよ。m(_ _)m

  • タイムスタンプ変更ソフト

    タイムスタンプを記憶し元に戻せるソフトを教えてください。 TimeStamp Stopper というソフトがあったのですが、XPでは動かないようです。 複数ファイル/フォルダをドラッグしてこれらのタイムスタンプ 作成日時/更新日付/アクセス日時(これはアクセスしたら変わってしまうけど) をします。 なんらかの編集をし保存します。 当然タイムスタンプは保存した日時になってしまうので、これを更新前の日付 (ドラッグ時に記録した)に戻すことができるソフトです。 vectorも探したんですけど任意の日付または今日に変更するソフト はたくさん見つかりますがこのようなことができるソフトがどれだかわかりませんでした。 可能であればNTFSアクセス権(一時的にeveryoneにして編集した場合など)も 記録し、元に戻せると最適ですがとりあえずタイムスタンプだけでもお願いします。

  • 英語・・正しいのは どちら??

    ● want が間違っていました すみません   よろしく お願いします 私は 先週の日曜日 彼女が何をしていたのか知りたい・・と言う場合の文について教えてください  (1) I want to know what she did last sunday.  (2) I want to know what she did you do last sunday. この場合は(2)が正解ですか ・・教えてください ある雑誌で(1)が正解となっていましたが この場合の 回答を教えてください

  • 外国人の作文(日曜日)

    日本在住の中国人の作文です。 より自然な日本語に添削お願いします。 ・・・・・・・・・・・・・・・ 久しぶりの日曜日です。 日曜日は毎週来るもので、久しぶりなんって、ずいぶん不自然な表現かもしれません。しかし、このごろお仕事やら、誰かとの約束など、自宅でゆっくり過ごす「日曜日」は、ありませんでした。  以前から田原さんの「サンデープロジェクト」という番組が好きで、良く見ていましたが、自民党に変わって以来、なんとまだ一回も見ていません。今日、ゆっくり見るがために、早朝から掃除やら、洗濯やら手早く家事を済ませ、十時五分前に中国茶を片手に、ソファーに腰掛けました。十時になりました。スイッチを入れましたが、「サンデープロジェクト」ではなく、「駅伝」でした!  「駅伝」を眺めながら、民主党に代わって、何が変わったかなと考えてみました。正直、何か変わったような気もしますが、それはなんだとは、はっきり分かりません。「無血の平成維新」というけれども、幕府を倒した明治初期の人々は、もう少しそわそわしたものがあったような気がします。時代劇の見すぎでしょうか。  昼寝でもしましょう。 ・・・・・・・・・・・・・・・

  • 日曜日の日付

    お世話になります。PHPで質問です。 似た様な質問はあったのですが、出来なかったので質問させて頂きます。 アクセスされた時に、その週の日曜日の日付を取得したいです。 アクセス日が2008年4月3日(木)の場合、2008年3月30日(日) 宜しくお願いします。

    • ベストアンサー
    • PHP