php - 查看文件中是否找到字符串的最快方法?

标签 php unix filesystems

假设我有一个大文件。该文件是一个 IP 列表,每个 IP 都在一个新行中,如下所示:

123.123.123.123
123.123.123.124
123.123.123.125
etc...

我可以这样做:

$file = file_get_contents($src);    
if (substr_count($file,'myip'))
    echo 'FOUND';

或者数组样式的类似方式:

$file = file($src,FILE_IGNORE_NEW_LINES);
if (in_array('myip',$file))
    echo 'FOUND';

但我认为第三种可能更快的替代方案。
逐行解析文件,如果找到字符串,当然会停止读取。

像这样:

$file = fopen($src,'r');
while(!feof($file)) { 
    $ip = fgets($file);
    if ($ip == $myIP) {
        die('Found');
    }   
}
fclose($file);

我的问题是:您认为还有其他更好的方法吗?

在性能方面,您认为哪种代码更快?

非常感谢各位

最佳答案

如果可以,请考虑使用 grepfind .它可能比 PHP 更快,更重要的是,内存效率更高。

关于php - 查看文件中是否找到字符串的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6018398/

相关文章:

php - 为什么php的in_array如果传递0就返回true?

php - 文件大小(): giving incorrect result

php - 与 Gmail 的 IMAP 连接非常慢

unix - 如何找出导致 core dump 的程序?

linux - 如何使用与我在 cron 作业中使用的环境相同的环境?

php - 如何使用 PHP 找到文件的 MIME 类型?

c++ - 如何使用 C++ 在 Windows 上创建具有 UNICODE 路径的文件

php - 帮助显示 MySQL 数据库中的数据

linux - 计算来自标准输入的字数和行数

php设置权限文件使其可写