用到Redis。

最初的逻辑:代码里判定只要token失效就会取toekn更新到Redis中。

问题:显而易见,分布式并行后,可能同时有两台或以上同时更新,导致其他设备取回的token失效,然后循环往复,将API次数耗尽。

经浩哥指点优化后的逻辑:
抽离token更新逻辑到定时脚[……]

Read more

有个需求,用片名做数组键名key,因为涉及到了一个分数字段的排序,发现使用array_multisort排序后,结果出现了0键名的奇怪数据。
经过诊断,发现是2046这部影片名造成的问题。查了下函数说明,确认了原因:

定义和用法
array_multisort() 函数返回排序数组。您可以[……]

Read more

有个系统,前端有个数据查询功能,原始逻辑大概是这样的:前台指定查询开始和结束时间,后台调用MongoDB,提取时间范围内的全部数据直接吐出csv格式文件。

当初估计没考虑数据量太大的情况,后来随着驻地的用户量上升,每日的数据量都变的很庞大,问题随之而来~

系统默认慢查询的触发时间是3秒,[……]

Read more

举个栗子:一个系统,有个历史add接口,受最大数量限制,使用memcache和mongo。

V4.0.1之前逻辑:

  1. 从cache取全部数据
  2. 按最大数量限制对数组做增改逻辑
  3. 如果大于24小时,则写入mongo
  4. 写入cache

统计次数:

测试同学压测性能一般,所以自己写了个并发的测试,发现每次超过500,都是几乎必定511后出现空返回~

经过查找,找到个靠谱的解释:如果worker进程不够用,master进程会prefork更多进程,
如果prefork达到了pm.max_children上限,worker进程又全都繁忙,[……]

Read more

SSH经常掉线,断线的话,可以尝试如下办法加入心跳包确保网络不被切断。

修改sshd配置,加入心跳包~方法如下:

vim /etc/ssh/sshd_config

加入或者启用:

ClientAliveInterval 10ClientAliveCountMax 1

如果您只想让当[……]

Read more

<?phpfunction foo(&$var){    $var++;}$a=5;foo($a);// $a is 6 here?>

看明白了吗,函数里的变量用了引用,修改后,是直接对函数外的变量有效的。

更新细节参考官方链接:http://php.net/manu[……]

Read more