人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでサーバのcronを使わず、プログラムの自動実行ができる方法を検討しています。

私が調べたところ
・Web cronを使う
・常時アクセスがあるページに実行用のプログラムをimgタグで埋め込む
・Windowsのタスクで定期的に実行
・RSSフィードで実行するプログラムを読みに行く

と言うのがほとんどで、それらの仕様ややり方は理解できます。
しかし、更に調べると以下のサイトで販売しているシステムでは、cronもimgタグも埋め込まないそうです。
http://www.mail-neo.com/

デモ版を見るとPHPなので、PHPでやる方法があるのだと思います。
しかし私にはPHPでcronも上記方法も使わず、自動実行する方法が思いつきません。

技術的にやり方がある場合は方法を教えてください。よろしくお願いします。
(他の言語と組み合わせたら出来る と言うことでしたら、その内容も教えてください)

●質問者: kt26
●カテゴリ:ウェブ制作
✍キーワード:PHP RSSフィード Web Windows ほと
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● vh5150
●27ポイント

登録した情報の配信を指定時刻まで遅延させることでご希望の機能が実現できます.

http://www.phppro.jp/phpmanual/php/function.time-sleep-until.htm...

◎質問者からの返答

つまりメールの予約配信なんかは、予約を入れたと同時に指定時刻まで遅延させるということですか?バックグランドで動作させれば出来るような気もしますが、、現実問題無理ではないでしょうか?


2 ● pinkymonk
●27ポイント

JavaやCで常駐(常に起動しっぱなしの状態)のアプリケーションを作成して

そのアプリケーションの中で時間を定期的にチェックして指定した時間になれば

処理を行う。

ということはできると思います。

◎質問者からの返答

「常に起動しっぱなし」のアプリケーションってWindows用のソフトですよね?

で、常時起動させるというのは私が質問に書いた「Windowsのタスクで定期的に実行」と、あまり変わらない気がするのですが。(つまり、自分のPCを常時起動させる必要がある)


それともLinux用のソフトを作ってサーバ上で起動し、自動実行用のプログラムを監視するのでしょうか?それこそcronみたいですが・・。


3 ● TRTr
●26ポイント

PHPで起動しっぱなしのスクリプトを書き、サーバでpseudo-cronぽく動作させる事は可能です。

最近ではtwitterbotなどで用いられています。

この方法は実行時間制限があるレンタルサーバなどでは使えないでしょう。


現実的には、挙げられたソフト含め、webcron.orgなど時刻登録を外のサーバで持ち、

外から何らかのコールバックを受ける、という形だと思われます。

単純にアクセス用のURLを持っていて

外からそのURLをリクエストする感じになるかと思います。

実装のやりかたによっては、URLが外部に漏れた場合は安全とかけ離れた実装となります。

たとえば、はてなアンテナやRSSアグリゲータで常時監視するように設定して

それをもとに時刻を算出するなどの方法が考えられます。


cronも指定時刻にアラームを上げるだけのプログラムです。

スプリプトが動作するサーバに起動しっぱなしのプログラムを一つ用意しておけば

どんな物/言語でも実行可能ですし、

それが自分のPCでなくても構いません。

しかし、どこかに一つは起動しっぱなしの環境と、そこで実行し続けられる何かが必要です。

cronの場合、cronが常に動き続けています。

http://pha22.net/twitterbot/cron.php

◎質問者からの返答

そうですね。「常に動き続ける環境」というのは必要ですね。


質問で出したURLのサイトは、cronを使わないと書いていますが、もしかしたらwebcronみたいな事を代行して実現しているのかもしれませんね。


常時起動しっぱなしのPHPプログラムの作り方はわかりましたし、その方法がレンタルサーバなどで実用的ではないというのも分かりました。そしてやはり一番最適なのはcronだと思うので、自動実行させたい要件が出た時には、cronを使うようにします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ