• ベストアンサー

URLをたたく賢い方法

定期的に実行させたいスクリプトを組んだのですが、あまりいいアイディアがなく、単にそのスクリプトを自分のホームページのフッターに file_get_contents() をおいて読み込ませるようにしています。 ただしかし、なんとなくページの読み込む時間が遅くなったような気がするので、 file_get_contents() 以外でURLをたたく方法がないかな、と思っています。 できればブラウザの処理に影響がないような方法を探しています。 ご存知の方おられましたらよろしくお願いいたします。

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

  • ベストアンサー
回答No.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を叩くだけのサービスがあれば良いかもしれませんね(作ろうかなぁ。。。)。 参考まで。

jyuu
質問者

お礼

かなり賢い方法をご教授いただき、ありがとうございました。 >cronでURLを叩くだけのサービスがあれば良いかもしれませんね(作ろうかなぁ。。。)。 ぜひぜひ^^。 ちなみに webcron.org というところを見つけましたが、初期設定で3つのURLまでサポートしてくれているようです。

その他の回答 (2)

  • gfct9s
  • ベストアンサー率90% (10/11)
回答No.2

> できましたら サーバ側で設定の必要ない方法を探しています。 それは難題ですね。 下記のページは、使用中の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) レンタルサーバーによっては、こうした方法で起動したスクリプトが  一定時間実行されるとか、あまりに負荷が高いとかすると、強制的に  中断される設定になっている場合があります。  レンタルサーバーの規約をもう一度ご覧になってください。

jyuu
質問者

お礼

丁寧に解説してくださってどうもありがとうございます。大変参考になります。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

定期的にやるのであれば、cronやatでwgetなどを 実行するというのが定番では?

jyuu
質問者

お礼

アドバイスありがとうございます。参考になります。 できましたら サーバ側で設定の必要ない方法を探しています。 http://www.htmlcenter.com/tutorials/tutorials.cfm?id=155&type=PHP http://www.sitepoint.com/article/introducing-cron 上記のページではPHPサイドで Cron Job が可能なようなことを書いていますが、これは CGI を呼び出すのでしょうか?

関連するQ&A

専門家に質問してみよう