我创建了一个本地Web应用程序来显示和交互数据,我得到了一个大的Json文件(大约250 Mo)。我有几个函数,以显示不同的数据,但目前每个函数都是通过读取和解析Json文件开始的:
$string = file_get_contents("myFile.json");
$json_a = json_decode($string, true);
事情是它很慢(大约4秒),因为文件很大...所以我想一劳永逸地解析Json文件并将解析后的数据存储在内存中,以便每个函数都可以使用它:
session_start();
$string = file_get_contents("myFile.json");
$_SESSION['json_a'] = json_decode($string, true);
然后在我的函数中使用$_SESSION['json_a']
。
但是当函数访问此$_SESSION['json_a']
变量时出现错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 195799278 bytes)
我认为这是因为文件太大了..但是为什么在使用变量时它会崩溃而不是在它构建时崩溃?为什么我可以使用我的第一个解决方案(每次解析),如果它对于内存来说太大了?
最后我的真正问题是:我如何优化它? (我知道sql数据库会好很多但我碰巧有json数据)