file_get_content
phpスクリプト実行の結果をダウンロードするためにを使用している場合:
//mainfile.php
$ctx = stream_context_create(array(
'http' => array(
'timeout' => $this->cfg['gp_timeout']/2
)
)
);
$url_xml='http://test.server.eu/webgatescript.php?getphoto¶m1=1&test=1¶m2=2¶m3=3';
$webgateResponse=file_get_contents($url_xml,false,$ctx);
私が知っているように、関数は戻り値をfile_get_content
返しますstring
-ファイルが存在しない場合はファイルの内容を返しますFALSE
。
リモートファイルがコンテンツを返すことを100%確信しているにもかかわらず、関数file_get_content
が戻ることがあります(私の場合、xmlファイルにはアクセスとログがあります)。FALSE
さらに、リモートスクリプトの実行終了後、数マイクロ秒をfile_get_content
返しますFALSE
が、タイムアウトが設定された場合よりも時間がかかりません。
ログの一部:
10:22:04<?xml version="1.0" encoding="UTF-8"?>
10:22:16<response><htlName/><lang/><texts/></response>
10:22:46<?xml version="1.0" encoding="UTF-8"?>
10:22:58<response><htlName/><lang/><texts/></response>
10:23:28<?xml version="1.0" encoding="UTF-8"?>
10:23:29<response><htlName/><lang/><texts/></response>
10:23:59<?xml version="1.0" encoding="UTF-8"?>
10:23:59<response><htlName/><lang/><texts/></response>
10:24:29<?xml version="1.0" encoding="UTF-8"?>
10:24:29<response><htlName/><lang/><texts/></response>
Warning: file_get_contents(http://test.server.eu/webgatescript.php?getphoto¶m1=1&test=1¶m2=2¶m3=3): failed to open stream: HTTP request failed! in /home/www/mainfile.php on line 22
Call Stack:
0.0002 93616 1. {main}() /home/www/mainfile.php:0
175.5346 109072 2. file_get_contents(string(172), bool, resource(14) of type (stream-context)) /home/www/mainfile.php:22
10:24:5910:25:46<?xml version="1.0" encoding="UTF-8"?>
10:25:47<response><htlName/><lang/><texts/></response>
私はいくつかのテストを行いました。そのうちの1つはファイルを実行mainfile.php
していましたexec
(この同じテストサーバーに両方のファイルがありますが、2つの別々のシステムになる本番サーバーにあります)
exec("php webgatescript.php >> tom2.log");
そして、実行のすべてのケースwebgatescript.php
はロギングです。