2017年1月

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

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

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

- 阅读剩余部分 -

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

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

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

- 阅读剩余部分 -

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

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

- 阅读剩余部分 -

CI框架开发自定义相关使用流程

在框架中使用自定义函数或类是不可避免的,再使用自动加载,就可以一劳永逸了(不是$this->load->XXX,而是加载一次整个应用都能使用的,不需要每个文件加一句)。

CI框架中使用可以自定义函数(写在helpers文件夹下,文件使用下划线命名法且需加上后缀_helper,eg:filename_helper)、可以自定义类(写在libraries文件夹下,文件使用驼峰式命名法,且类名需与文件名一致,内容开头处需要加上defined('BASEPATH') OR exit('No direct script access allowed');,我叫它抬头,后面也是这么叫)、常量有好几种方式,下面我会一一说明。

- 阅读剩余部分 -