当我使用 afile_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
。
有时函数会file_get_content
返回FALSE
,尽管我 100% 确定远程文件返回了内容(在我的情况下是 xml 文件,我有访问权限和日志)。此外,在执行远程脚本结束后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>
我做了一些测试,其中一个正在运行文件(我mainfile.php
在exec
同一台测试服务器上有两个文件,但在生产服务器上将是两个独立的系统)
exec("php webgatescript.php >> tom2.log");
并且每个跑步案例都在webgatescript.php
记录。