php技术博客
让天下没有搞不定的bug~

关注:3k的php程序题公布答案了

        前几天发布了月薪3k的php程序题,查看原文问题请点击:原文试题 现在把答案贴在这里,你们答对了吗?

方法一:

<?php

$log = ‘test.log’;

$fp = fopen($log, “r+”);

$errornum = $baidunum = 0;

while(($line = fgets($fp)) !== false)

{

if (strpos($line, “404”) !== false)

$errornum++;

elseif (strpos($line, “Baiduspider”) !== false)

$baidunum++;

}

echo “404:”, $errornum;

echo “\n”;

echo “baidu:”, $baidunum;

echo “\n”;

?>

方法二:

$str1 = ‘404’;

$file_handle = fopen(“test.log”,”r”);

$a = $b = 0;

while (!feof($file_handle)) {

$str2 = fgets($file_handle);

if (preg_match(“/404/”,$str2,$result)){

$a++;

}

else if(preg_match(“/Baiduspider/”,$str2,$result)){

$b++;

}

}

fclose($file_handle);

echo “404来过的总次数:$a”;

echo ‘<br/>’;

echo “百度蜘蛛来过的总次数:$b”;

echo ‘<br/>’;
 

请看清题目: 输出 404 和 百度蜘蛛 来过的总次数,虽然这两种方法都能计算出结果,但是第二种方法效率肯定不如第一种方法高,第一种方法是利用fgets函数在文件中一行一行的进行匹配,而第二种方法是整个文件的循环,所以建议用第一种方法!您答对了吗?

赞(0)
未经允许不得转载:PHP技术博客 » 关注:3k的php程序题公布答案了

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    用file_get_contents() 效率不是更高,然后再explode(),最后统计下次数就ok了~

    ddtey10年前 (2012-02-22)回复