- ベストアンサー
URLをたたく賢い方法
定期的に実行させたいスクリプトを組んだのですが、あまりいいアイディアがなく、単にそのスクリプトを自分のホームページのフッターに file_get_contents() をおいて読み込ませるようにしています。 ただしかし、なんとなくページの読み込む時間が遅くなったような気がするので、 file_get_contents() 以外でURLをたたく方法がないかな、と思っています。 できればブラウザの処理に影響がないような方法を探しています。 ご存知の方おられましたらよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> http://www.htmlcenter.com/tutorials/tutorials.cfm?id=155&type=PHP この辺はcronで設定していますよ。phpだけで定期的な処理というのは無理だと思います。 URLを叩くだけなら、img で空タグを使えばfile_get_contents()等使わなくても良いと思います。 <img src="http://path.php" width="1" height="1" style="display:none;" /> 別に1ピクセル使わなくてもいいんですが。 cronでURLを叩くだけのサービスがあれば良いかもしれませんね(作ろうかなぁ。。。)。 参考まで。
その他の回答 (2)
- gfct9s
- ベストアンサー率90% (10/11)
> できましたら サーバ側で設定の必要ない方法を探しています。 それは難題ですね。 下記のページは、使用中のPHPがCGIなのか、Apacheモジュールなのか、 それによってcronへの登録方法とスクリプトの記述が変わるよ、のように 読めましたが、違うでしょうか。 http://www.htmlcenter.com/tutorials/tutorials.cfm?id=155&type=PHP ■代替案 file_get_contents()が書いてあるphpと、そこで呼び出しているPHPが 同じサーバーにある場合で、OSがLinux系だとします。 現在file_get_contents()にしているところを、下記のようにしても いけるんではないかと思いますが、いかがでしょうか。 system('/usr/local/bin/php script.php > /dev/null &'); これはscript.phpをバックグラウンドで実行し、その出力(echoとか) は破棄しなさいという意味です。 system()関数ほか類似の関数については、下記をご覧になってください。 http://au.php.net/manual/ja/function.system.php http://au.php.net/manual/ja/function.exec.php ■注意点 1) /usr/local/bin/phpの部分は、サーバーのphpのパスを指定してください。 2) script.phpのなかでincludeとかrequireとかしている場合、 ファイルパスが相対指定ですと、うまく動かない場合があります。 ほかの原因でもうまく動いていないように思える場合は、/dev/nullを /tmp/reportとかにして、その中に出力されたエラーメッセージを 見てください。 3) レンタルサーバーによっては、こうした方法で起動したスクリプトが 一定時間実行されるとか、あまりに負荷が高いとかすると、強制的に 中断される設定になっている場合があります。 レンタルサーバーの規約をもう一度ご覧になってください。
お礼
丁寧に解説してくださってどうもありがとうございます。大変参考になります。
- yambejp
- ベストアンサー率51% (3827/7415)
定期的にやるのであれば、cronやatでwgetなどを 実行するというのが定番では?
お礼
アドバイスありがとうございます。参考になります。 できましたら サーバ側で設定の必要ない方法を探しています。 http://www.htmlcenter.com/tutorials/tutorials.cfm?id=155&type=PHP http://www.sitepoint.com/article/introducing-cron 上記のページではPHPサイドで Cron Job が可能なようなことを書いていますが、これは CGI を呼び出すのでしょうか?
お礼
かなり賢い方法をご教授いただき、ありがとうございました。 >cronでURLを叩くだけのサービスがあれば良いかもしれませんね(作ろうかなぁ。。。)。 ぜひぜひ^^。 ちなみに webcron.org というところを見つけましたが、初期設定で3つのURLまでサポートしてくれているようです。