我试图通过cronjob运行php脚本,有时(大约一半时间)我收到以下警告:
PHP警告:file_get_contents(http://url.com):无法打开流:HTTP请求失败!在第285行的/path/myfile.php中
程序继续运行之后,这让我觉得它不是超时问题或内存问题(超时设置为10分钟,内存设置为128M),但是我存储该函数调用结果的变量在空。奇怪的是,我正在使用其他url参数对此同一网站进行多次其他调用,并且它们从未出现过问题。这个函数调用的唯一区别是它下载的文件大约是70 MB,而其他文件大约是300 kb。
另外,如果我通过SSH连接到Web服务器并手动运行php脚本,只有从cron运行时,我才会收到此警告。
我也尝试过使用cURL而不是file_get_contents但是我的内存不足。
谢谢,我们将不胜感激。
答案 0 :(得分:2)
也许URL.com上的远程服务器有时超时或为该特定(大)请求返回错误?
我认为您不应该尝试将70mb存储在变量中。
您可以将cURL配置为直接下载到文件。类似的东西:
$file = fopen ('my.file', 'w');
$c = curl_init('http://url.com/whatever');
curl_setopt($c, CURLOPT_FILE, $file);
curl_exec($c);
curl_close($c);
fclose($file);
如果不出意外,curl应该会为你提供更好的错误。
答案 1 :(得分:1)
从另一个答案..仔细检查一下您使用的URL参数是否一直没有出现此问题:
注意:如果要打开包含特殊字符的URI(例如空格),则需要使用urlencode() - http://docs.php.net/file%5Fget%5Fcontents
对URI进行编码