前几天发布了月薪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函数在文件中一行一行的进行匹配,而第二种方法是整个文件的循环,所以建议用第一种方法!您答对了吗?