4月 202017
 

官方最新的mysql版本是mysql5.7.18。那么在centOS下,怎么编译安装呢。安下边步骤一步一步的来。

1,找到源码地址,并下载,解压。 https://dev.mysql.com/downloads/mysql/

在大多数情况下,你只需要安装MySQL-server和MySQL-client安装包就可以安装上一个标准功能的MySQL。对于一个标准安装来说,其他的安装包不是必需的。这里选择下载RPM Bundle包,它包含mysql的所有功能(server,client,test)。确定要下载的版本后,需要登录才能出最后的下载按钮。 Continue reading »

4月 182017
 

http_build_query() 生成 url-encoded 之后的请求字符串描述(用于将数组转化为url查询字符串)。 string http_build_query ( array formdata [, string numeric_prefix] )

   $data = array('time'=>1492493886, 'key'=>'lovephp');
   echo 'http://www.vinixiu.com/?'.http_build_query($data);
   //输出: http://www.vinixiu.com/?time=1492493886&key=lovephp

parse_str() 把查询字符串解析到变量中。parse_str(string,array)

    parse_str('time=1492493886&key=lovephp', $arr);
    echo $arr;
    //输出: Array ( [time] => 1492493886 [key] => 'lovephp' )

Continue reading »

4月 172017
 

举个例子:
A想要从自己的帐户中转1000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。在这个事务里,要做如下操作:
1. 从A的帐户中减去1000块钱。如果A的帐户原来有3000块钱,现在就变成2000块钱了。
2. 在B的帐户里加1000块钱。如果B的帐户如果原来有2000块钱,现在则变成3000块钱了。
如果在A的帐户已经减去了1000块钱的时候,忽然发生了意外,比如停电什么的,导致转帐事务意外终止了,而此时B的帐户里还没有增加1000块钱。那么,我们称这个操作失败了,要进行回滚。回滚就是回到事务开始之前的状态,也就是回到A的帐户还没减1000块的状态,B的帐户的原来的状态。此时A的帐户仍然有3000块,B的帐户仍然有2000块。
我们把这种要么一起成功(A帐户成功减少1000,同时B帐户成功增加1000),要么一起失败(A帐户回到原来状态,B帐户也回到原来状态)的操作叫原子性操作。
如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。这种特性就叫原子性。
Continue reading »

4月 172017
 

redis基础使用教程: http://www.cnblogs.com/taceywong/p/5840163.html

php中的使用redis简单实例。

    if(FALSE == $this->redis->get('seeNums'))
    {
	$this->redis->set('seeNums', 1);
	$this->redis->expire('seeNums', 60 * 60 * 24);
    }
    else
    {
	$this->redis->incrby('seeNums', 1);
    }
    $seeNums = $this->redis->get('seeNums');

redis易百教程:http://www.yiibai.com/redis/strings_incr.html

redis与php结合的应用场景:
Continue reading »

4月 072017
 

重启nginx。

    /etc/init.d/nginx restart

重启mysql

    /etc/init.d/mysql restart

修改了php.ini后,重启php

    /etc/init.d/php-fpm restart

重启ams服务器

    /etc/init.d/ams restart

另外,说下pm2,pm2可以后台运行你的程序。比如node.js默认情况下,当运行窗体关闭了(我用的是XShell5),node.js的服务也停止了。当用pm2启动的node.js的程序的时候,关掉XShell5窗体,程序一样在运行。

4月 052017
 

redis是什么。redis 是一个高性能的key-value数据库。

redis的三个主要特点:
1,redis将其数据库完全保存在内存中,仅使用磁盘进行持久化。
2,与其它键值数据存储相比,redis有一组相对丰富的数据类型。
3,redis可以将数据复制到任意数量的从机中。

redis的一些优点:
1,异常快 – redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。
2,支持丰富的数据类型 – redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。
3,操作具有原子性 – 所有redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。
4,多实用工具 – redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。
Continue reading »

3月 142017
 

避免数据库频繁查询,对变动频率不高,经常用的数据,可以缓存起来。免得总是查询数据库。这里总结一个手动写cache的方式。

先了解两个api。
1,var_export方法。var_export,输出或返回一个变量的字符串表示。可以将变量内容打印到一个PHP文件里,使用include的方式来重新获取变量内容。这个就是手段。
2,file_put_contents方法。file_put_contents可以写入数据到文件中。比如,php文件,txt文件,图片文件。
通过上边两步,就可以将想要的数据写入到php文件中。

整个的流程是这样的。
1,先通过is_file方法判断缓存文件是否存在。如果存在,直接return include文件。否则,则查询数据库,得到数据,处理数据,写入php文件中。返回数据。
注意,判断一个文件是否存在还可用file_exists。其效率没is_file好。另外,is_file有缓存。各种细节需要注意。if_file不能判断路径,文件夹,file_exists可以。is_dir可以用来判断路径的。

参考:http://www.opstool.com/article/262
Continue reading »

10月 232016
 

用ci框架做项目的时候,访问都会带上index.php,这样很影响美观。强迫症的实在受不了。蓝瘦,香菇。

办法总是有的。不过,不仅要去掉index.php.还要css,js这些不受影响。下边是我阿里云服务器的配置情况。配置完后,重启nginx服务器。再将ci项目中的config文件里的index.php配置成空字符串,然后访问站点。 Continue reading »

9月 262016
 

在表格中,有时候需要排序的功能。网上用的多的是tablesorter。那么就用tablesorter吧。然后,就开始做了。然后,就会有一个有一个的问题。

1,tablesorter有官网没,有文档没,怎么下,怎么用。

2,我想要table的第一列不参与排序。或某一列几列才参与排序。

3,我想要table的最后一行不参与排序或某一行不参与排序。

4,tablesorter的默认样式太丑了。而表示降序升序的三角图标还蛮好看的。我只想要这个图标,不要其他的又该如何。

5,tablesorter的常见排序规则。

6,tablesorter是否可以自定义排序方式。

7,tablesorter是否可以多列排序。就是多列与。

8,table动态更新,或翻页。

那么,就围绕上边的问题一个一个的来解决。

Continue reading »

8月 032016
 

既然是想要历史消息,那么肯定会想到将消息存储起来。存储数据有服务端的mysql等,也有本地的indexedDB,websql,localStorage,cookie,session等。使用场景,可能是app,也可能是web。这个时候就需要去衡量用那个了。

如果不是对消息非常重视,安全,消息查看等,就先丢掉服务端mysql等。h5推崇使用indexedDB,可是indexedDB的兼容性问题比较大,支持度不是很广。localStorage,cookie等,这些存储些简单,小的数据还行,存储聊天等大量,有一定结构的数据,就不方便了。这里,因为app需要,我用了websql。websql虽然对平台支持也不全,可已相当可观了。其语句,也类似mysql。比较好理解。

先看一个东东。sqlite_master

再看一个东东。删除所有表。
1,先select,获取所有表的表名。
S E L E C T name F R O M sqlite_master W H E R E type=’table’ O R D E R B Y name

2, 删除表。D R O P TABLE test

最后看一个东东。怎么创建数据库,打开,操作增删改查。http://www.jb51.net/html5/431355.html

看完这些。自己建库建表,可以干活了。

最后,为了方便显示最近消息。可以创建一个总表,用来存储聊天对象的引用。因为聊天,除了群聊,还有一对一聊天。你可以一对一,群聊都整在一起。可是这样有点乱也不好看。可以像qq,微信等。单聊和群聊都分窗口。步骤:

1,消息来了。建一个表,存储该对象的消息。可能是单一聊天,也可能是群聊。单一聊天,可用对方的uid加自己的uid加特定字符组成一个表(创建它)。如果是群,可以用群的uid+特定字符串组成一个表(创建它))
2, 建立一个总表,存储上边表的表名,还有一些简要的聊天信息。比如发送消息人的uid,最后一次发的消息等。
3,通过对应关系。在适当的时候取出来。渲染出来。算是基本完成了。

网站地图