标签归档:C

MySQL通过localhost无法连接数据库的解决

参考: http://ju.outofmemory.cn/entry/11342 问题:一台服务器的PHP程序通过localhost地址无法连接数据库,但是如果设置为127.0.0.1则可以正常连接,连接其他数据库服务器也正常。MySQL的权限设置正确,且通过mysql命令行客户端可以正常连接数据库。 分析:这是典型的socket没有正确设置的情况。 连接MySQL数据库有两种方式:TCP/IP(一般理解的端口的那种)和Unix套接字(一般叫socket或者sock)。大部分情况下,可以用localhost代表本机127.0.0.1,但是在MySQL连接时,二者不可混用,而且MySQL中权限设置中localhost与127.0.0.1也是分开设置的。 当设置为127.0.0.1时,系统通过TCP/IP方式连接数据库; 当设置为localhost时,系统通过socket方式连接数据库。 解决:首先要看本机MySQL的socket套接字文件在哪里,查看命令是: mysqld –verbose –help | grep socket 输出结果显示套接字文件的位置,比如:这台服务器显示的是 socket /var/run/mysqld/mysqld.sock 然后修改php的配置文件php.ini与之对应起来就好了。 找到这一项: mysql.default_socket = 一般来说这一项都是空的,改成: mysql.default_socket = /var/run/mysqld/mysqld.sock 这里应写上一步查询到的文件,根据你的情况设置。至此php配置就修改好了,如果是CLI(命令行)方式或者CGI方式的话,立即就生效,如果是FASTCGI方式,需要重启一下fastcgi进程。(php-fpm 重启 service php-fpm restart)

发表在 服务器端 | 标签为 , , , | 留下评论

又挂彩了

发表得有点迟。。。 你说他妹的怎么就这么倒霉呢?都已经买了回家的票了,就去豆豆宿舍住一晚上准备14号早上从小区后门坐公交车去市里赶火车的,都晚上10点多了。(为什么不坐飞机?珠海机场离这近。离职了的人要学会节省。飞机飞到武汉机场回荆门更麻烦。)结果就被客厅里面那个二逼茶几的玻璃划了,一阵痛,然后左小腿就不敢看啊。10cm长,那么深,肥肉就跟一碗豆腐脑被震动了似的。。。竟然不是很疼,也没留什么血。去村上医院,给简单包扎了一下(没收钱),让去三灶镇医院,镇医院又重新包扎了一下,让去红旗镇医院,那有个牛叉的手外科医院。豆豆真能找,找了个牛叉的私家车,越野车(宝马的吧?)。人家也是帮忙,就收了40块,速度飞快。第一次打麻药,第一次缝针,然后输液搞到凌晨3点了。我突然想起来5月14号是农历四月初五啊。尼玛,我25岁生日啊。这是什么开始。是兄弟们不舍得我走?还是珠海不舍得我走?去年9月22摩托车摔的疤现在还清楚的很。。。珠海,爱我就让我走吧!。已经养了一周了,月底拆线吧,估计最早也就6月初回北京了。感谢每次受伤都陪伴着的好室友+好基友+好同事-豆豆(运维组的黑人组长),还有其他关心、拎好多水果来看我的同事们。。。

发表在 生活 | 标签为 , , | 留下评论

回家相亲了个对象!

呵呵,喜得妹子!

发表在 心情随笔 | 标签为 , | 留下评论

几种程序报警通知的方式

线上的项目出现错误不能及时知道怎么办?不及时处理影响用户体验怎么办! 在error_handle 和exception_handle 方法里添加提醒方式。 有以下几种比较及时的方式: 1.短信接口。缺点是得浪费点钱。(不过一条就6分左右。这种费钱的报警必须注意控制频率。避免碰到访问量大时出现错误报警,持续狂刷,瞬间几千条短信耗完。可以借助memcache 几分钟报警一条。) 2.发邮件 + 微信开启邮件插件。 通知很及时! 3.qq机器人。 网上关于qq机器人的php版程序很多。主要是通过curl模拟了3g.qq.com的聊天过程。组织header,抓取响应的header 弄到sid,设置一些cookie,反正搞得跟3g.qq.com走网页一样就行了。curl_setopt 那个header选项设置为 true 便于能抓到header。 4.发送微信消息。 进微信公众平台 http://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm-login&lang=zh_CN 然后你就用firebug或者chrome开发者工具研究怎么模拟提交表单吧。你要是看看qq机器人的程序弄这个很容易的。 好像是要设置2个cookie mp_user=gh_xxxxxxxxxxxxxxx mp_sid=RjU3cUQ1UU1ZVkloYXhrZE5ETUJLSmM0Q2MxYmpqaVlvcGxadThLcTJwSGNWWnFGQWJmalNwbHNCbkRTR1dOMWk3X0xkSWFmNlBzME1RRmxaU0NPZVhmUWhSRlZNc1cxeFVNTEJVWUZKbkdzY2lMOFl0T3FxSnQ1aUJYMmppSHc   进去后再看看发送给某人消息怎么发的吧。就是后台这块发消息用的一个fakeId 。你在要给某个用户发消息时链接上可以看到。 用户管理: http://mp.weixin.qq.com/cgi-bin/contactmanagepage?t=wxm-friend&lang=zh_CN&pagesize=10&pageidx=0&type=0&groupid=100 给某个用户发消息: http://mp.weixin.qq.com/cgi-bin/singlemsgpage?fromfakeid=60890145&msgid=&source=&count=20&t=wxm-singlechat&lang=zh_CN 提交 : 网络 – 保持一下。 http://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response&lang=zh_CN post参数: ajax 1 … 继续阅读

发表在 工作总结 | 标签为 , , , , , | 留下评论

关于safari浏览器请求apple-touch-icon等

前阵子看接口日志,发现很多图片的url 404错误。大概都是apple-touch-icon.png 或者apple-touch-icon-precomposed.png 或者一些带尺寸大小的图片。因为名称上带apple,我就盯着日志,用iphone访问了一下网址,发现在想收藏网页或者放到桌面时(也就是点那个分享按钮弹出选项层时,会掉网站的缩图),这个时候触发请求了图片的那种url,导致出现404.然后我随便弄了个图片,弄成那个图片名,就出现指定的图片作为缩略图了。后来用各种ios访问过。发现还有好几种图片。什么precomposed、带尺寸的72*72,114*114的等等。后来百度了一下,有很多文章提到了这个。虽然作用不大,但是增加网站形象认知度还是有点作用的。。。 另外再head 部分加个<meta name=”apple-itunes-app” content=”app-id=9999999″>  id为苹果软件地址的id 用safari浏览时顶部出个弹层显示软件安装状态。对于引导新用户安装挺好的。 另外发现一些相关的好文章: WebApp化apple-touch-icon http://uecdcn.diandian.com/post/2012-07-06/40030373829 苹果图标apple-touch-icon-precomposed和apple-touch-icon两种设置的区别探究 http://blog.163.com/agw_slsyn/blog/static/3091511220124413037195/ iPhone 5/iOS 6 前端开发指南 http://www.iteye.com/news/26171

发表在 工作总结 | 标签为 , | 留下评论

FTP配置之vsftpd.chroot_list

ftp安装详解 可以了解 http://www.cnblogs.com/hnrainll/archive/2011/02/16/1956538.html 本篇抄袭来自: http://blog.163.com/xiaohui_1123@126/blog/static/398052402010101995025953/ FTP配置文件vsftpd.conf关于限制用户在默认目录的配置,涉及到三个字段:chroot_local_user,chroot_list_enable,chroot_list_file。 我们按顺序配置下来吧!首先,要限制用户在默认目录必须将chroot_local_user设置为yes,即chroot_local_user=yes。此时,用户登录之后,执行目录跳转命令,如cd /home,显示550 Failed to change directory。你可以试试其他的账号,应该都是一样的结果,无法跳转目录。 接下来的问题是,我想对某些用户开个小灶,怎么办呢?那就要说到后面的两个字段啦! 设置如下:chroot_list_enable=yes chroot_list_file=/路径/vsftpd.chroot_list,这里的路径你可以自己指定,之后你要到指定的路径下面创建vsftpd.chroot_list文件。 上面两个设置的意思是(我自己的理解,呵呵!),第一个说明chroot_list这个列表有用,第二个是指明列表的位置。那接着说这个列表的作用,也就是这个vsftpd.chroot_list的作用吧。 做个试验,1.创建两个用户账号,first 和second;2.在上面配置指定的路径下面创建vsftpd.chroot_list文件,将first账号写入文件。 3.用first登录,然后执行目录跳转命令,发现可以成功跳转;用second登录,同样执行目录跳转命令,发现跳转失败。 接下来我们从另外一方面看,如果注释掉chroot_local_user=yes,再做上面的实验,结果刚好相反,first不能随意跳转,而second可以随意跳转。 结论:写入vsftpd.chroot_list文件的用户账号是有特权的账号。 别人都不可以跳的时候,它可以随意跳转; 别人都可以跳的时候,它不可以跳,呵呵!写入这个文件的账号太有个性啦!

发表在 服务器端 | 标签为 , , , | 留下评论

百度空间升级太扯淡了

文章分类列表都没有了。。。坑爹的。http://hi.baidu.com/new/zxsz4085

发表在 扯淡 | 标签为 , | 留下评论

CodeIgniter相关配置分析

core/controller 49行 $this->load->initlialize() 包含autoload设置的 加载类 1.active_group 导入database.php 配置文件 active_group =’default’ 如果使用load->database(‘xx’) 指定了key active_group 就为key session类 87行 连接默认数据库  $this->CI->load->database(); active_group default 就会连接default指定的数据库 如果配置文件把active_group 改成ask_ext 则会连接ask_ext 错误。  2.active_record active_record=false CI_DB_driver::insert_string() active_record=true CI_DB_active_record::insert()  也有父类的CI_DB_driver::insert_string() 都调用CI_DB_mysql_driver::_insert()获取最终的sql DB.php 120行  定义类CI_DB 继承CI_DB_active_record 或 CI_DB_driver,CI_DB_active_record 本身继承了CI_DB_driver,mysql_driver.php (CI_DB_mysql_driver)继承 … 继续阅读

发表在 Php | 标签为 , , , | 留下评论

Redis应用场景

1.在主页中显示最新的项目列表。 Redis使用的是常驻内存的缓存,速度非常快。LPUSH用来插入一个内容ID,作为关键字存储在列表头部。LTRIM用来限制列表中的项目数最多为5000。如果用户需要的检索的数据量超越这个缓存容量,这时才需要把请求发送到数据库。 list: lpush + ltrim  //$r->lTrim($key,0,4999); 2.删除和过滤。 如果一篇文章被删除,可以使用LREM从缓存中彻底清除掉。 list: $r->lRem($key,’find_id’,-2);/从右边删除2个value为find_id的元素 3.排行榜及相关问题。 排行榜(leader board)按照得分进行排序。ZADD命令可以直接实现这个功能,而ZREVRANGE命令可以用来按照得分来获取前100名的用户,ZRANK可以用来获取用户排名,非常直接而且操作容易。 zset: zadd z1 100 aaa   zrevrange z1 0 -1 withscores 分数从大到小 zrank z1 aaa  分数从小到大 返回aaa的排名 zincrby z1 5 111 给值为111的元素的score 加5 4.按照用户投票和时间排序。 这就像Reddit的排行榜,得分会随着时间变化。LPUSH和LTRIM命令结合运用,把文章添加到一个列表中。一项后台任务用来获取列表,并重新计算列表的排序,ZADD命令用来按照新的顺序填充生成列表。列表可以实现非常快速的检索,即使是负载很重的站点。 list: lpush … 继续阅读

发表在 Nosql | 标签为 , | 留下评论

Redis学习

从网上下了个redis命令参数中文版。照着敲了一遍命令。让后找php的api敲了一遍。 1.string setbit 对key所储存的字符串值,设置或清除指定偏移量上的位(bit)。 setnx setex 2.hash HSET key field value 将哈希表key中的域field的值设为value。 hgetall 结果列表为: key1 val1 key2 val2 ……. hkeys hvals 3.list lpush xx yy 向队列key值 插入值yy lpushx 需要队列存在才能插入成功 lpop blpop rpoplpush brpoplpush ltrim lrange $r->lRem($key,’find’,-2); //从右边删除2个value为find的元素 linsert hot after … 继续阅读

发表在 Nosql | 标签为 , , | 留下评论