別サーバーに設置したPHPスクリプトを実行する方法
PHPには、便利な関数が数えられないほどあります。
include()なんかは使い捲くり状態になりやすいのですが、実はこれで結構ハマってしまう場合があります。
例えば、別のサーバーに設置してあるPHPスクリプトを読み込んで、実行しようという事も可能なのですが、PHP5からはallow_url_includeが基本的にオフになっていて、実行する事はできません。
ini_set()関数でこれを回避する事は可能ではありますが、それもサーバーの仕様でこの関数そのものが殺されている場合もあります。
特に、include()で呼び出されたファイルは、その呼び出された先をカレントディレクトリとして動作しようとしますので、パス関係なんかはグチャグチャになってしまいますので、同一サーバーのみでしか使えないようなものでもありますがね。。
これらを上手く回避する方法としての例を一つ。
表示させるサイトとプログラムの設置サーバーが異なっている場合。
表示させるサイトをA
スクリプトを実行するサーバーをBとします。
AからBの中にある実行ファイル(B1)を呼び出し、実行結果をBの中のファイル(B2)に書き出し
その書き出された結果をAに呼び出し表示させるという手法になるのですが
BのサーバーでCronが使えれば何も悩まないのですが、CRONが使えない場合に、
どのようにしてAサーバーからの指令でBサーバーのプログラムを実行させるか。
ここでinclude()を使っては、先にも申し上げましたとおり、パスがグチャグチャになり、まともに動く事は期待できないですね。
そこで
これを解決するのが、PHPのコマンドではなく、htmlのタグで可能になります。
objectタグでB1を呼び出します。
これで、呼び出されたプログラムは単独で実行する事が可能となる為、内部パスもそのままで手を入れる必要がなくなります。
B1が動作することで作られたB2の中身をA1に読み込み表示させるという事で、Aのサイトも自動的に更新されるという事になります。
但し、B2を読み込む際には、objectタグやIFRAME。さらにはjavascriptでの呼び出しも避けましょう。
これらを使っては、表示させるページのソースが変化しません。
つまり、検索エンジンさんから「更新したね!」とは見てもらえません。




