サーバーサイドで動作する小規模なCGI的な物しか作った事が無く、計算した時刻にツイートをする方法について、スマートな方法が思いつきません。今のところ思いついたのは
1.(翌日の)日の出を計算して、atコマンドを呼び出し指定した時刻に「日の出です」とツイートするプログラムを登録・実行させる
2.任意の時間に起動したプログラムで日の出までの残り時間を計算しそれまでずっとsleep(でいいのか?)する
3.無限ループするタイプ(?)のプログラムを作り、指定時刻と一致したらツイートする
cronなどで1分おきに起動させて…という方法はあまりにも美しくないので避けたいです。
上記のような方法、またはもっと良いと思われる方法で良い書き方があれば例を挙げて教えて頂けると幸いです。参考になるプログラムでもかまいません。
・環境など
さくらVPS CentOS6.4
言語 Python 3.3.x / PHP / Perlのいずれかだと嬉しい
日の出はあくまで一例ですが、これの計算は
http://php.net/manual/ja/function.date-sunrise.php
このあたりの方法か、ライブラリ的な物でできそうなのでそれを使う予定です。
ぼくなら、(1) の at コマンドを選ぶ。
日の出の時刻だけ計算して、こんなコマンドを実行するだけだし、コマンドの内容をぺろっと出しておけば、デバッグも簡単。
at -f ジョブ内容 6:20 tomorrow
負荷をかけない、という意味では (2) の sleep と似たようなものですけど、開発段階で、明日の何時に動くはずだ、というのが atq コマンドで確認できるのが良い。
間違ってたら、削除もできる。
最悪なのは (3) の無限ループ。
何もしてないのに、CPU だけ喰ってる。
一分ごとに cron で起動するよりも悪い。
(4)cronで毎日一度だけ起動する
自身が直接ツイートするのではなく、
毎日定時に起動して日の出時刻の計算を行い、
予約投稿サービスにポストする形にすれば楽。
POSTするだけで予約できるサービスの例
http://twitdelay.net/