dポイントプレゼントキャンペーン実施中!

定期的に実行させたいスクリプトを組んだのですが、あまりいいアイディアがなく、単にそのスクリプトを自分のホームページのフッターに file_get_contents() をおいて読み込ませるようにしています。

ただしかし、なんとなくページの読み込む時間が遅くなったような気がするので、 file_get_contents() 以外でURLをたたく方法がないかな、と思っています。 できればブラウザの処理に影響がないような方法を探しています。

ご存知の方おられましたらよろしくお願いいたします。

A 回答 (3件)

>

http://www.htmlcenter.com/tutorials/tutorials.cf …
この辺はcronで設定していますよ。phpだけで定期的な処理というのは無理だと思います。

URLを叩くだけなら、img で空タグを使えばfile_get_contents()等使わなくても良いと思います。

<img src="http://path.php" width="1" height="1" style="display:none;" />
別に1ピクセル使わなくてもいいんですが。

cronでURLを叩くだけのサービスがあれば良いかもしれませんね(作ろうかなぁ。。。)。

参考まで。
    • good
    • 0
この回答へのお礼

かなり賢い方法をご教授いただき、ありがとうございました。

>cronでURLを叩くだけのサービスがあれば良いかもしれませんね(作ろうかなぁ。。。)。

ぜひぜひ^^。

ちなみに webcron.org というところを見つけましたが、初期設定で3つのURLまでサポートしてくれているようです。

お礼日時:2006/12/01 22:20

> できましたら サーバ側で設定の必要ない方法を探しています。


それは難題ですね。

下記のページは、使用中のPHPがCGIなのか、Apacheモジュールなのか、
それによってcronへの登録方法とスクリプトの記述が変わるよ、のように
読めましたが、違うでしょうか。
http://www.htmlcenter.com/tutorials/tutorials.cf …

■代替案
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) レンタルサーバーによっては、こうした方法で起動したスクリプトが
 一定時間実行されるとか、あまりに負荷が高いとかすると、強制的に
 中断される設定になっている場合があります。
 レンタルサーバーの規約をもう一度ご覧になってください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/01 22:18

定期的にやるのであれば、cronやatでwgetなどを


実行するというのが定番では?
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。参考になります。

できましたら サーバ側で設定の必要ない方法を探しています。
http://www.htmlcenter.com/tutorials/tutorials.cf …
http://www.sitepoint.com/article/introducing-cron
上記のページではPHPサイドで Cron Job が可能なようなことを書いていますが、これは CGI を呼び出すのでしょうか?

お礼日時:2006/12/01 17:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!