php - 在核心 php 中读取 1000 多个 txt 文件
问题描述
我有 1000 多个以文件名作为用户名的 txt 文件。现在我正在使用循环阅读它。这是我的代码
for($i=0; $i<1240; $i++){
$node=$users_array[$i];
$read_file="Uploads/".$node."/".$node.".txt";
if (file_exists($read_file)) {
if(filesize($read_file) > 0){
$myfile = fopen($read_file, "r");
$file_str =fread($myfile,filesize($read_file));
fclose($myfile);
}
}
}
当循环运行时,它需要太多时间并且服务器超时。
我不知道为什么要花这么多时间,因为文件中没有太多数据。从 txt 文件中读取所有文本应该很快。我对吗?
解决方案
好吧,您正在 HDD/SSD 上进行读取操作,这些操作不如内存快,因此您应该期望运行时间较长,具体取决于文本文件的大小。您可以尝试以下方法:
- 如果您从浏览器运行脚本,我建议从命令行运行它,这样您就不会出现 Web 服务器超时,并且如果 php 上没有设置时间执行限制,脚本将设法完成,在这种情况下可能你应该增加它
- 在上面的脚本中,您可以将“filesize($read_file)”设置为一个变量,这样您就不会执行两次,它可能会改进脚本的运行
- 如果您仍然无法完成工作,请考虑分批运行 100 或 500 个
- 密切关注内存使用情况,也许这就是脚本死亡的原因
- 如果您需要文件的内容作为字符串,您可以尝试“file_get_contents”并可能跳过“filesize”检查所有
推荐阅读
- angular - Nrwl for Angular:自定义生成的故事
- postgresql - 从服务器复制文件并将其粘贴到 Postgresql 中的表中?
- python - 当我不希望它停止其他异步命令时,Discord py await 似乎停止了
- python - Blender Python 不能调用类;AttributeError:“模块”对象没有属性“操作员”
- python - 如何实现在单独保存中保存数据?
- html - 将数据透视表输出转换为数据框/数组?
- excel - 如何计算 Excel VBA 代码中的错误?
- c++ - 继承ostringstream时的歧义
- mysql - 单个查询:获取 12 个月的评级,但计算所有
- php - PHP:使用 GML 标签解析 XML 文件