私が調べたところ
・Web cronを使う
・常時アクセスがあるページに実行用のプログラムをimgタグで埋め込む
・Windowsのタスクで定期的に実行
・RSSフィードで実行するプログラムを読みに行く
と言うのがほとんどで、それらの仕様ややり方は理解できます。
しかし、更に調べると以下のサイトで販売しているシステムでは、cronもimgタグも埋め込まないそうです。
http://www.mail-neo.com/
デモ版を見るとPHPなので、PHPでやる方法があるのだと思います。
しかし私にはPHPでcronも上記方法も使わず、自動実行する方法が思いつきません。
技術的にやり方がある場合は方法を教えてください。よろしくお願いします。
(他の言語と組み合わせたら出来る と言うことでしたら、その内容も教えてください)
登録した情報の配信を指定時刻まで遅延させることでご希望の機能が実現できます.
http://www.phppro.jp/phpmanual/php/function.time-sleep-until.htm...
JavaやCで常駐(常に起動しっぱなしの状態)のアプリケーションを作成して
そのアプリケーションの中で時間を定期的にチェックして指定した時間になれば
処理を行う。
ということはできると思います。
「常に起動しっぱなし」のアプリケーションってWindows用のソフトですよね?
で、常時起動させるというのは私が質問に書いた「Windowsのタスクで定期的に実行」と、あまり変わらない気がするのですが。(つまり、自分のPCを常時起動させる必要がある)
それともLinux用のソフトを作ってサーバ上で起動し、自動実行用のプログラムを監視するのでしょうか?それこそcronみたいですが・・。
PHPで起動しっぱなしのスクリプトを書き、サーバでpseudo-cronぽく動作させる事は可能です。
最近ではtwitterbotなどで用いられています。
この方法は実行時間制限があるレンタルサーバなどでは使えないでしょう。
現実的には、挙げられたソフト含め、webcron.orgなど時刻登録を外のサーバで持ち、
外から何らかのコールバックを受ける、という形だと思われます。
単純にアクセス用のURLを持っていて
外からそのURLをリクエストする感じになるかと思います。
実装のやりかたによっては、URLが外部に漏れた場合は安全とかけ離れた実装となります。
たとえば、はてなアンテナやRSSアグリゲータで常時監視するように設定して
それをもとに時刻を算出するなどの方法が考えられます。
cronも指定時刻にアラームを上げるだけのプログラムです。
スプリプトが動作するサーバに起動しっぱなしのプログラムを一つ用意しておけば
どんな物/言語でも実行可能ですし、
それが自分のPCでなくても構いません。
しかし、どこかに一つは起動しっぱなしの環境と、そこで実行し続けられる何かが必要です。
cronの場合、cronが常に動き続けています。
そうですね。「常に動き続ける環境」というのは必要ですね。
質問で出したURLのサイトは、cronを使わないと書いていますが、もしかしたらwebcronみたいな事を代行して実現しているのかもしれませんね。
常時起動しっぱなしのPHPプログラムの作り方はわかりましたし、その方法がレンタルサーバなどで実用的ではないというのも分かりました。そしてやはり一番最適なのはcronだと思うので、自動実行させたい要件が出た時には、cronを使うようにします。
つまりメールの予約配信なんかは、予約を入れたと同時に指定時刻まで遅延させるということですか?バックグランドで動作させれば出来るような気もしますが、、現実問題無理ではないでしょうか?