Welcome to Snooda's Blog
php的pcntl_signal用法及注意事项
[| 2012/09/26 21:43]
最近需要做一个基于php的多进程server。为了优雅重启,需要捕获一下kill发出的SIGTERM信号,于是用到了pcntl_signal。
刚开始发现捕获信号无效,无法进入信号处理函数。研究了一下文档,发现要运行一下declare(ticks = 1);看解释说是为了产生时钟云云,我的理解就类似于晶振一样。添加后父进程可以收到信号了。
但是子进程还是无法收到信号,排查了很久,没看到什么异常,子进程是平时阻塞噻socket_accept的,怀疑是不是系统调用在这里无法中断,于是改成while 1循环,可以顺利进入中断处理函数。
然后搜索了一下,原来pcntl默认都是会自动重新启动被中断的系统调用的,对外表现则是无法中断系统调用的阻塞。
这时回头看手册,原来pcntl_signal还有第三个参数,也是一个可选参数,就是让我们决定是否自动重启系统调用,选择不重启即可。
刚开始发现捕获信号无效,无法进入信号处理函数。研究了一下文档,发现要运行一下declare(ticks = 1);看解释说是为了产生时钟云云,我的理解就类似于晶振一样。添加后父进程可以收到信号了。
但是子进程还是无法收到信号,排查了很久,没看到什么异常,子进程是平时阻塞噻socket_accept的,怀疑是不是系统调用在这里无法中断,于是改成while 1循环,可以顺利进入中断处理函数。
然后搜索了一下,原来pcntl默认都是会自动重新启动被中断的系统调用的,对外表现则是无法中断系统调用的阻塞。
这时回头看手册,原来pcntl_signal还有第三个参数,也是一个可选参数,就是让我们决定是否自动重启系统调用,选择不重启即可。
php和mysql性能优化-开启缓存和慢查询日志
[| 2012/05/27 17:55]
wp的速度慢是出了名的,主要是因为php的执行速度比较慢,页面间require的层数比较多,除了关闭不必要的插件外,在php端做字节码缓存也有不错的效果,开启字节码缓存很简单,相关的php扩展也有很多个,在这里选了apc扩展,直接apt-get install php-apc然后重启php即可。经试验发现wp的执行时间缩短了一半以上,效果相当的不错。
然后发现mysql信息里提示慢查询的数量比较多,可惜之前没有开启记录,在my.cnf里加上如下三条即可。
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes
记录执行时间超过2秒的和没有用到索引的查询日志到mysql-slow.log中,这样就可以对sql语句进行调优了。
然后发现mysql信息里提示慢查询的数量比较多,可惜之前没有开启记录,在my.cnf里加上如下三条即可。
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes
记录执行时间超过2秒的和没有用到索引的查询日志到mysql-slow.log中,这样就可以对sql语句进行调优了。
blog迁移
[| 2011/10/27 02:02]
经历了很长时间的准备后,终于把blog迁移了。哈哈,庆祝一下。
考虑了很长时间,最后还是决定还在老服务器上开博客,先不动地方,因为新服务器最近网络变得非常差,失去了信心,而老服务器基本稳定,还能接受,稳妥起见,并且为了避免给搜索引擎带来太大的困扰,所以没有换服务器。
迁移前先升级了下php,之前php还是5.1,实在太老了,加入了centos-test源,yum update提示我几个php依赖错误,卸掉那几个包后重新安装,好了,还有几个包源里没有,比如filter,查了下,原来从5.2起整合进php了,自然也不需要了。还有eaccelerate似乎也找不到,下了源码编译。然后把自己写的模块重新编译一遍,一切正常,restart php。哈哈,升级了。
之前已经修改、测试好了博客,一些配置也配置好了,所以迁移显得非常简单,直接从代码库中拉出代码到指定位置,代码就部署完成。使用昨天编写的数据导入脚本,把数据导入(期间出了个小插曲,php会对同样连接条件的连接请求进行复用,导致数据库use错乱,后来一个用localhost一个用127.0.0.1才好了,这个是始料未及的,因为之前是在两台机器间迁移的)。然后根据之前写的rewrite规则修改nginx配置文件,重启~ok了。
心情不错,写博客又有动力了。
考虑了很长时间,最后还是决定还在老服务器上开博客,先不动地方,因为新服务器最近网络变得非常差,失去了信心,而老服务器基本稳定,还能接受,稳妥起见,并且为了避免给搜索引擎带来太大的困扰,所以没有换服务器。
迁移前先升级了下php,之前php还是5.1,实在太老了,加入了centos-test源,yum update提示我几个php依赖错误,卸掉那几个包后重新安装,好了,还有几个包源里没有,比如filter,查了下,原来从5.2起整合进php了,自然也不需要了。还有eaccelerate似乎也找不到,下了源码编译。然后把自己写的模块重新编译一遍,一切正常,restart php。哈哈,升级了。
之前已经修改、测试好了博客,一些配置也配置好了,所以迁移显得非常简单,直接从代码库中拉出代码到指定位置,代码就部署完成。使用昨天编写的数据导入脚本,把数据导入(期间出了个小插曲,php会对同样连接条件的连接请求进行复用,导致数据库use错乱,后来一个用localhost一个用127.0.0.1才好了,这个是始料未及的,因为之前是在两台机器间迁移的)。然后根据之前写的rewrite规则修改nginx配置文件,重启~ok了。
心情不错,写博客又有动力了。
blog测试
[| 2010/02/13 10:47]
终于做了个雏形出来,赶在年前上传测试一下,呼呼,欢迎留言指正不足之处。谢谢