• 1
预览模式: 普通 | 列表

php7 unset数组元素会不会释放内存

 针对这个问题, 我们先上一段代码. 

<?php
$memory2 = $memory3 = $memory4 = 0;
$data = [];
$memory = memory_get_usage();
foreach (range(1, 100000) as $key) {
	$data[$key] = str_repeat("1', 100);
}

$memory2 = memory_get_usage() - $memory;

foreach (range(1, 100000) as $key) {
	unset($data[$key]);
}

$memory3 = memory_get_usage() - $memory;

echo "memory2: " . $memory2, PHP_EOL;
echo "memory3: " . $memory3, PHP_EOL;

这段代码分别会输出3个内存使用情况. 分别记为memory2, memory3. 

memory2: 给数组设置10000个key, 给value字段设置100个1的字符串. 之后的内存. 

memory3: unset掉数据中所有的key之后的内存值. 

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 3745

array_unshift的性能问题

 最近在看php的源码, 看数组这一块的时候发现了一个事情, 分享一下. 

这个array_unshift函数平时使用也不是太多, 所以平时可能没太在意. 先看下源码. 

这里显示array_unshift时,会创建一个新的数组, 把参数中的插入后再把原数组的数据接在后面. 也就是每unshift一个元素, 整个数组都要移动一遍, 这样的效率是很低的. 我们来测试一下, 验证我们的猜想. 

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 3887

不加全文索引解决模糊查询的问题

 模糊查询是我们在开发中经常会碰到的问题, 比如会员列表会根据用户昵称搜索会员, 根据商品标题搜索商品之类的. 如果数据量不是很大(比方说100W以内), 又没有比如文章内容的情况下可以不需要搞全文索引. 

比如我们的场景是这样的, SAAS软件可能会有多公司, 每个公司下有很多的会员. 我们现在需要搜索某个公司下昵称中包含"远洋"的这样一些会员. member表包含600多万条数据, 其中company_id=184306的用户的会员有82W. 

 

查看更多...

分类:PHP教程 | 固定链接 | 评论: 0 | 查看次数: 4024

简单应对验证码接口恶意攻击

 这几天不断的有人攻击公司的验证码接口, 就是随机生成了一系列的手机号然后调用注册页面的验证码的接口. 对待这种攻击自然最严谨的是适时弹出验证码, 可临时我们没有这么快的速度去做这套验证码的方案(前面写了"适时"二字自然不能对所有人都弹出验证码, 本来用户转注册的转化率就低, 再加个验证码那就更难看了). 

今天又是周末, 只能简单处理一下.

我们的接口拉扯类似于

/api/smsCaptcha/send.json

注意到攻击者是用固定的几个IP来发起请求的, 此时最简单有效又不影响用户的方法自然是屏蔽攻击者的ip. 一个简单的指令就能让攻击者暴露无遗. 

tail -100000 /data/logs/nginx_access.log|grep smsC|awk "{print $1}'|sort |uniq -c|sort -n

查看更多...

分类:linux教程 | 固定链接 | 评论: 0 | 查看次数: 4481
  • 1
博主QQ: 友情链接请找我
QQ群: 灰色档案
返回顶部 关闭