在没有完全读/写的情况下读/写1gb文本文件

时间:2017-12-29 18:49:58

标签: php

我尝试使用流来创建脚本来读取和写入specefic行而不实际打开和写入整个文件。

Ex:文本文件大1GB,包含1000多行。 格式为.. ipv4 / ipv6 =当前时间

我目前使用的脚本工作正常,但我在编写一个specefic行时遇到问题,而不必使用数组中的文件放置内容,这会打开整个文件并花费大量时间。

这是我的代码:

origin_id    serialn   X1    X2    X3   X4    year    month    day
        1        101    A     A     B null    2017        6     10
        2        151    A  null     B    C    2016        7     15

问题我有: 使用int

重写整个文件而不是匹配搜索行后的specefic行

请任何帮助或澄清真的有帮助< 3

1 个答案:

答案 0 :(得分:-1)

我会使用shell_exec()作为操作系统索引文件,你的搜索/替换方法会有这么小的开销,你可能永远不会看到影响。

实际的linux命令是:

find /var/www/directory/file.txt -type f -readable -writable -exec sed -i "s/string_you_are_looking_for/replacement_text/g" {} \;

已添加到shell_exec()

shell_exec('find /var/www/directory/file.txt -type f -readable -writable -exec sed -i "s/string_you_are_looking_for/replacement_text/g" {} \;');

... 需要注意的是,我使用/作为分隔符,如果要替换的字符串中有斜杠,则为&# 39; ll必须逃脱它们.. IE \/还有其他一些"仅限Linux"项目需要转义,例如$@ IE \$\@

请注意php(此外Linux用户www-data)需要具有写入文件的权限。