问题日志记录
1. MySQL 相关
问题类型 | 备注 |
---|---|
主键冲突 | 解决方法:on duplicate key update |
数据库取值 | sql查出来的是数组,数组里面的值是字符串,需要解码decode |
数据库存值 | 数据入库必须进行转义或者指定数据类型 |
from_unixtime | from_unixtime(241252311) = 0000-00-00 00:00:00 |
unix_timestamp | unix_timestamp(0000-00-00 00:00:00) = 214125151 |
报错:where clause is ambiguous,连表查询时where 条件没有指明所属表 | where 的条件字段添加table.field |
2. LUA 相关
问题类型 | 备注 | ||
---|---|---|---|
lua对数字和字符串不敏感 | 条件判断不需要强制转类型 | ||
pairs和ipairs的区别 | ipairs索引范围[1]~nil,nil便退出,pairs可以打印所有索引对应的值 | pairs 在遍历table时由于table的储存格式是{2,4,6,7,8} 打印出来的结果不一定是按照顺序打印 | 因为没有前面的索引数字[1],[2]..所以默认为哈希表式排序,顺序不一定 |
ngx_lua模块中共享内存的使用 lua_shared_dict name 100m; | 语法:lua_shared_dict | ||
ngx_lua中想要获得时间差要使用os的时间方法 | 使用ngx.time时,时间会被缓存到进程中,连续调用ngx.time不会发生改变,要使用os.time() | ||
lua中获取毫秒级别时间的方法 | 使用local socket = require “socket” socket.gettime()方法获取好秒时间 | ||
lua代码中执行系统命令 | os.excute(cmd) 或者 io.popen(cmd[, mode]) mode有取值”r”和”w”两种,分别表示以读、写方式打开,默认是以读的方式。 | ||
f = io.popen(cmd[, mode])执行后会返回文件句柄,将执行结果储存到f中 | for line in f:lines() do print(line) end |
3. linux 相关
问题类型 | 备注 |
---|---|
curl访问url掉参数的问题 | 特殊符号进行转移例如&,\& 即可 |
升级Python后yum报错,因为yum是基于Python2写,语法不一致 | 修改yum配置文件(vi /usr/bin/yum)。把文件头部的#!/usr/bin/python改成#!/usr/bin/python2.7。修改/usr/libexec/urlgrabber-ext-down文件,将python同样指向python2.7 |
添加环境变量的三种方式 |
方法一:直接运行命令export PATH=$PATH:/usr/local/nginx/sbin/ 和 export (仅在当前会话有效)
方法二:执行vi ~/.bash_profile修改文件中PATH一行,将/usr/local/nginx/sbin/ 加入到PATH=$PATH:$HOME/bin一行之后 (仅对当前登录用户有效)
方法三:修改/etc/profile 末尾加上 PATH=$PATH:/usr/local/webserver/php/bin: \n export PATH (对所有用户生效)
|
4. NGINX 相关
问题类型 | 备注 |
---|---|
nginx调度算法 | 1.轮循,2.weight weight和访问比率成正比,3.ip_hash每一个用户ip固定访问一个服务器,4.服务器响应时间,5.url_hash |
访问第三方接口需要upstream代理 | upstream backend{},location = url {} |
nginx允许跨域配置 | 头域信息配置为 ngx.header[“Access-Control-Allow-Origin”] = “*” |
nginx做正向代理https遇到SSL_do_handshake()握手失败 | 1. 协议不同服务器为http,我使用的https 2. location 设置proxy_ssl_session_reuse off;无用 |
Nginx错误信息:client intended to send too large body | client_body_buffer_size 10M;client_max_body_size 10M; |
ngx防止sql注入,转义字符串的方法 | ngx.quote_sql_str() |
卸载nginxnginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory) | /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf |
nginx重启 | /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf 启动前检查并指定配置文件为-c后的nginx配置文件 /usr/local/nginx/sbin/nginx -s reload |