逐行反向读取文件
我有一些代码,搜索一个巨大的日志文件并找到一个关键字,对于大多数情况下,这是在文档的底部附近。在这种情况下,从底部开始搜索并向上搜索会更有效率。
$pos = stripos($body,$keyword);
$snippet_pre = substr($body, $pos, SNIPPET_LENGTH);
我已经看过strripos,虽然它做了我想要的,因为在找到最后一次出现,它听起来像它从文档的开始搜索,所以我会添加很多不必要的工作,我的查询,因为大多数关键字都在字符串/文档
的底部附近任何想法?
按换行符展开日志文件以获得数组。反转你的数组,现在你可以从末尾开始逐行搜索。
$lines = explode("n",$body);
$reversed = array_reverse($lines);
foreach($reversed AS $line) {
// Search for your keyword
}
如果您谈论的是一个巨大的日志文件,因此您绝对不想将其全部读入内存,那么您也可以考虑反向查找方法,尽管通常不需要。在这里看到的:
使用fseek
如果将负偏移量设置为第三个参数,则strripos将从末尾开始向后搜索。
$pos = stripos($body,$keyword,$offset);