• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

取一个数组的前1000条数值,该如何解决

php 搞代码 4年前 (2022-01-23) 33次浏览 已收录 0个评论

取一个数组的前1000条数值
<?php

$fn = ‘/var/log/haproxy.log.2’;
$fp = fopen($fn, ‘r’) or die(“file op@本文来源gaodai$ma#com搞$代*码6网搞代gaodaima码en $fn false”);
while($s = fgets($fp)) {
preg_match(‘/\[[\d.:]+\].+\[([\d.:]+)\]/’, $s, $r);
if(empty($r[1])) continue;
@$res[$r[1]]++;
}

fclose($fp);
asort($res);

print_r($res);
?>

——解决方案——————–
你的需求这样是解决不了的

要分开处理。。。。。

比如,可将ip按第一位,写到255个文件里面,,,也可以将ip转换成数字,这样处理后续可以少用点内存

分别在255个文件里面,找出前1000名。。。因为每组至多包含2^24个不同的数【暂时不考虑ipv6】,这个内存可接受的
这样用一个数组遍历,复杂度O(n),即可找出前1000

最后维护一个1000的有序数组,往里面插入数据即可,超过1000,弹出最小的那个


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:取一个数组的前1000条数值,该如何解决

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址