CI框架钩子hook的使用

最近打脸了,因为很久没更博客了,脸好疼。。。

钩子的使用起源是在刚面试的时候,被面试官指着我基于CI做的demo说用过这个(指着hooks目录)吗?,当时我就懵逼了,只能摇头尴尬苦笑的说了没有。不过事情过去了我并没有把它放过,然后回去看了一下钩子hook。


HOOK是什么?

HOOK(钩子)见名思其意,这东西应该是用来“挂”在哪儿的。没错,hook像事件驱动,hook具体操作就像js里的事件绑定的那个方法函数,而各种click、blur等等就像钩子的挂载点,当你做相应的操作就会触发这个钩子。

阅读剩余部分 -

初步剖析Memcached服务器分布式部署原理

当我们网站的数据很多、读写数据库频繁的时候我们就会考虑优化网站访问速度,为其添加缓存,提高用户体验,减轻数据库的压力。而Memcached就是一个不错的缓存技术系统(KV数据库)。

虽然memcached可以应对任意多个连接,使用非阻塞的网络I/O,在访问速度上是没话说,但是有时候一台Memcached服务器并不能满足我们的要求,其中一个很重要的问题是,由于Memcached是吧数据储存在内存中的(和Redis一样,但Redis支持持久化,而Memcached则没有),如果服务器崩溃了,那么数据就没了,这无疑是一个灾难。当然一般Memcached不会存储独一无二的数据,而是作为数据库的一个缓存来用,也就是说数据库里肯定是有数据备份的,但是若是数据很大呢,这么多数据需要重新从数据库里取所需要的时间也是不可小觑的。

阅读剩余部分 -

Linux命令:例行性工作行程crontab理解

这算是一篇复习的博文吧,很久没有去看linux命令了,本来自己是有想过去看《每天一个linux命令》,奈何没有做到,现在是时候试着雄起了。

废话不多讲,开始说一下我和crontab的缘起故事。在很多情况下需要做一些定时的执行脚本的工作,虽然数据库有个定时任务,但是有些操作不是所有sql语句、存储过程一些能解决的。我还没回学校之前当实习生的时候,就因为要对redis做一些监控和预测的事情,脚本我是写好了,但是定时执行就是个问题了,除了定时执行还有一些小问题(后面会详细说到)。

阅读剩余部分 -

注意的问题:CI框架下分页语句与sql的一点差异

分页功能的实现基本上是每个web应用不可避免的。以前自己很蠢,会把所有数据一次性从数据库取出来,然后再分成一个二维数组,转json格式传给前端,然后前端再通过点击不同的页数显示不同页面,结果慢的要死。现在不会了,按正常的套路来应该是前端先获取总数(总页数)以及首页的数据并显示,然后再通过点击不同的页码再请求返回相应段的数据,后台这边的操作就是接收到不同的页码去查询数据库返回相应的数据。

阅读剩余部分 -