我有一个简单的 PHP 脚本来逐行读取远程文件,然后对其进行 JSON 解码。在生产服务器上一切正常,但在我的本地计算机(MAMP 堆栈、OSX)上 PHP 挂起。它非常慢,需要 2 分钟以上才能生成 JSON 文件。我认为这是json_decode()冻结的。为什么只在 MAMP 上?
我认为它陷入了while循环,因为我无法显示$str作为所有行结果的最终变量。
如果您想知道为什么我需要逐行读取文件,那是因为在真实场景中,远程 JSON 文件是一个 40MB 的文本文件。我唯一好的表现结果就是这样,但是有什么好的建议吗?
有没有配置php.ini可以帮助解决这个问题?
// The path to the JSON File
$fileName = 'http://www.xxxx.xxx/response-single.json';
//Open the file in "reading only" mode.
$fileHandle = fopen($fileName, "r");
//If we failed to get a file handle, throw an Exception.
if($fileHandle === false){
error_log("erro handle");
throw new Exception('Could not get file handle for: ' . $fileName);
}
//While we haven't reach the end of the file.
$str = "";
while(!feof($fileHandle)) {
//Read the current line in.
$line = fgets($fileHandle);
$str .= $line;
}
//Finally, close the file handle.
fclose($fileHandle);
$json = json_decode($str, true); // decode the JSON into an associative array
谢谢你的时间。
拉丁的传说