我有一个大约1.7MB的文本文件,它有我需要的应用程序的单词列表。我需要在页面加载时将其加载到数组中,然后可用于AJAX请求所针对的其他PHP文件。现在,我在加载页面时将它加载到数组中,然后将其存储在会话中,以便AJAX文件在请求它时可用。这是做这件事的最好方法吗?将文件加载到PHP数组中,最好的方法是什么?
回答
真的取决于你在处理数据。如果AJAX只需要这个庞大列表中的某几个单词,它可能最好存储在一个数据库中。
千万记住,即使列表存储在一个会话它会暗示你的脚本加载了对每一个调用数组。对于或许是的东西来说,接缝不是非常需要。
虽然你不给我们很多细节。
,你可以获得时间执行sql查询,而不是循环整个1.7MB的单词 – pleasedontbelong 2010-08-19 17:51:55
只是为了更清楚一点,该数组将有近200,000个元素(单词)。 AJAX请求基本上检查给定的单词是否在数组中。 – roflwaffle 2010-08-19 19:40:31
@Brandon不要犹豫,把它放入数据库。使用减少的资源(更少的RAM),您将获得性能提升(速度搜索)。 – Frankie 2010-08-19 22:25:19
如果整个阵列必须加载到PHP,我会写一个脚本,使它成为一个包含单词列表的数组定义一个PHP脚本,让你有一个包含PHP文件:
$myArray = array('blah', 'blah', 'blah'); //etc
然后,我会包括(require_once)......最PHP脚本引擎将能够以优化很容易地......没有多大意义在其存储在一个会话,只是将使用更多的磁盘空间/数据库空间/内存以供存储。
的file
命令是相当快,所以我敢肯定有将是备受缓存任何收获。
您是否在每一页上加载数据?如果不是这样,不要和会话一起去,因为即使你不需要它,你也会有加载的开销。
数据取决于用户吗?如果不是这样,不要与会话一起去,因为你会毫无理由地复制所有的数据。
如果你正在做的更复杂的分析,那么我会建议使用缓存
file_put_contents($filename, '<?php return '.var_export($array, true).';');
然后文件,你需要做的是$data = include $filename
获取数据...
你可以即使它足够智能以检测更改:
function getData() {
static $data = array();
if (empty($data)) {
$cache = '/path/to/cache/file';
$full = '/path/to/original/file';
if (!file_exists($cache) || filemtime($cache) < filemtime($full)) {
$data = parseDataFileIntoArray($full);
$code = '<?php return '.var_export($data, true).';';
file_put_contents($cache, $code);
} else {
$data = include $cache;
}
}
return $data;
}
小心解释downvote?假设整个数组必须在PHP域(不使用数据库),这是一个相当不错的设计。它避免了每个页面加载的双重内存使用问题,即任何序列化的内容都会有问题。它适用于所有服务器(因为它不需要PECL扩展)。如果您安装了一个OPCode缓存,它将充分利用OPCode缓存(不需要更改该功能)... – ircmaxell 2010-08-19 18:04:46
- 1. 在PHP中加载一组文字数据的最简单方法是什么?
- 2. 将XML文件加载到对象中。最好的方法?
- 3. 保存/加载数组内容到文件的最佳方式是什么?
- 4. 什么是将entityproxy绑定到UI组件的好方法?
- 5. 在php中加载dll的最佳方法是什么?
- 6. 将大文本文件加载到int数组中的最快方法
- 7. 将数值附加到元素的好方法是什么?
- 8. 什么是最简单的方式下载PHP中的文件
- 9. 将数组添加到Mysql的最佳方式是什么
- 10. Android的PHP函数 - 什么是最好的方法?
- 11. 将数据库添加到html文件最简单的方法是什么?
- 12. 在Matlab中加载数据的最快方法是什么?
- 13. 将数据加载到db的更有效方法是什么?
- 14. 什么是在laravel中将数组数据保存到mySQL的好方法
- 15. 什么是最好从/电子邮件验证方法在PHP?
- 16. 什么是预加载数据的好方法?
- 17. Sort ObservableCollection - 什么是最好的方法?
- 18. 什么是记录最好的方法?
- 19. 在PHP中组合这个数组数组的最有效方法是什么?
- 20. 在PHP中读取大文件的最佳方法是什么?
- 21. 解析这个配置文件的最好方法是什么?
- 22. 什么是最好的方法来存储PDF文件?
- 23. 什么是最好的方法来生成xml文件
- 24. 将数据写入文件的最有效方法是什么?
- 25. 将数据保存到文件的最佳方式是什么?
- 26. 在Django的Angular中干什么最好的方法是什么?
- 27. 在c#中加密文件最简单的方法是什么?
- 28. 加载正确的PhoneGap文件的最佳方式是什么
- 29. 什么是最快/最有效的方式来追加一个文件加载到内存中的文件?
- 30. 在matlab中加载多个图像tiff文件的最快方法是什么?
为什么不在加载页面时将其加载到数组中?为什么要进入会话?你真的需要在每个页面加载所有这些话吗? – 2010-08-19 17:47:18
我想知道的是,如果我将文件加载到AJAX请求转到的PHP文件中的数组中,如果它将每个请求中的文件加载到数组中。 – roflwaffle 2010-08-19 23:35:09