高并发场景下的缓存使用误区

十一聚会,某谈及人生理想。我要的是“地位,身份和爱情!”,其实就是金钱,面子和美女。O.正文9月份,连续两天(AB 两天)线上出现业务故障,redis 监控曲线瞬间上涨。业务场景:一千万 UV / 日redis监控曲线(修改图片好麻烦,曲线意会下吧~)redis日志业务代码<?(self::$_debug) ? Helper_Log::writeApplog('newFeatureOfMixedFeed', "初始化配比数据.") : null;if (self::$_redisDb == null) self::$_redisDb = new Comm_Redisdb(self::REDIS_SERVER);/** 判断是否有缓存数据 **$total = self::$_redisDb->lSize(Conf_Sailmixfeed::REDIS_CONF_RAT... Read More

Git 与 SVN 的使用感受

工作环境需要,分别接触了 Git 和 SVN 版本控制工具。接触不久,尽管这两种工具都不是很熟悉,目前仅能达到满足简单的工作需求(有时还需要查引擎)。但,还是有一些感受以记录。分支(branches)与里程碑(tagsGit 的分支和里程碑很有趣和简单,可以快速地在当前工作区切换不同的分支和里程碑。SVN 的分支和里程碑本身就是一个目录(拷贝),目录下分别有一个 .svn 的文件夹以存储版本信息。所以,SVN 切换分支很麻烦,需要切换工作区(每一个工作区只对应服务器的某一分支)。而 Git 却很方便。集中式与分布式这个事情和上面的分支和里程碑是有重叠的地方的。Git 采取的是分布式。简单的说就是每台 checkout 过代码的笔记本上都有着一个完整的代码库。而 SVN 却是集中式的,只有一个是代码仓库,就是服务器。所以,Git可以本地提交,SVN需联网提交。Git 是没有中心服务器的,每... Read More

WEB 开发之前端与后端通信解决方案

每天都得找点乐子,今天的乐子就是“WEB开发中前端与后端通信的解决方案”。首先,说一下“神圣”的需求。假设,我们面前是一个报名活动的页面。所有的逻辑都发生在这报名按钮上,下面是导图做法一按钮是一个链接,当我们用可爱的手指轻轻触碰它时。它会告诉浏览器,我是一个链接。之后,浏览器被跳转到一个新的地址上。与此同时,后端会执行当前的逻辑,渲染对应的 WEB 页面。这种做法很糟糕1、用户体验不好,跳转页面的吞吐量比较高,加大用户的等待时间2、同时,也加大服务器的负担3、代码冗余度较高,需要写若干个前端页面和后端方法做法二那么,用 Ajax 来实现前后端的通信(异步)也许是个不错的做法。既然,谈到通信,那么必定要有个标准。那,标准是个什么东西?举个例子(秒懂!哈哈公认的标准脸型不符合标准的脸型所以,你知道。如果程序没有标准,是一件多么令人“恼怒”的事情。需要两个 PHP 类库标准接口<?... Read More

微信支付 JSAPI 开发中的问题

前言:这篇文章讲的是利用微信官方提供的 JSAPI 接口,实现微信网页支付。希望在看之前,要确认以下几件事情,否则会在解决问题时很费解。① 接口文档版本号是 V3.3(在官方提供的 PHP DEMO 中的 README.txt 文件中查看。当然,也可以参考压缩包的名字(wxm-payment-biz-api218f8e.zip)来确认版本② 微信支付 PDF 文档的版本为 V3.3.7(如果上述版本对了,这步应该也是一致的,因为这两个文件是在一个包里③ 该文章说的是 JSAPI 的开发简单看了下微信支付的文档和源码(压缩包名:wxm-payment-biz-api218f8e.zip;PDF 文档名:【微信支付】微信公众号支付接口文档V3.3.7.pdf;)。然后,修改了微信的配置文件。有如下几个配置项值得注意1、 MCHI注释是“受理商 ID,身份标识”。可以在邮件中查看,这个邮件... Read More