最近由于update了ubuntu的源,导致原来新源与本地系统库一些lib冲突,导致系统桌面显示异常,后来只有重装,新安装了php5.4.9,还安装了redis,php-redis扩展,php-redis扩展2,10。但把原来的项目一放上去,就报nginx 502错误(nginx 502错误真是个很头疼的问题)。打开nginx日志查看
[error] 29229#0: *1403 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server:
不知道所云。后来打开php-fpm错误日志,得到的log日志
[08-Oct-2013 21:22:23] WARNING: [pool www] child 12026 exited on signal 11 (SIGSEGV - core dumped) after 5.997917 seconds from start
[08-Oct-2013 21:22:23] NOTICE: [pool www] child 12034 started
可以确定的一点,是php-fpm在一个时间点后重启了一个进程。还是毫无头绪。在网上搜了一大遍,有个有用的跟踪方法。
1、设置php-fpm,只起一个work进程
2、重启php-fpm, 执行ps aux grep php-fpm 得到work进程号pid
3、strace -p pid
下面是我得到的信息
getcwd("/home/www/wms2.xxxx.com", 4096) = 26
lstat("/home/www/wms2.xiaomi.com/./RWebUser.php", 0x7ffff4e30a10) = -1 ENOENT (No such file or directory)
lstat("/home/www/wms2.xiaomi.com/protected/vendor/wms/api/RWebUser.php", 0x7ffff4e30a10) = -1 ENOENT (No such file or directory)
lstat("/home/www/wms2.xiaomi.com/protected/vendor/wms/RWebUser.php", 0x7ffff4e30a10) = -1 ENOENT (No such file or directory)
lstat("/home/www/wms2.xiaomi.com/protected/extensions/log/RWebUser.php", 0x7ffff4e30a10) = -1 ENOENT (No such file or directory)
lstat("/home/www/wms2.xiaomi.com/protected/modules/rights/components/RWebUser.php", {st_mode=S_IFREG0777, st_size=2945, ...}) = 0
lstat("/home/www/wms2.xiaomi.com/protected/modules/rights/components", {st_mode=S_IFDIR0777, st_size=4096, ...}) = 0
lstat("/home/www/wms2.xiaomi.com/protected/modules/rights", {st_mode=S_IFDIR0777, st_size=4096, ...}) = 0
lstat("/home/www/wms2.xiaomi.com/protected/modules", {st_mode=S_IFDIR0777, st_size=4096, ...}) = 0
open("/home/www/wms2.xiaomi.com/protected/modules/rights/components/RWebUser.php", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG0777, st_size=2945, ...}) = 0
fstat(5, {st_mode=S_IFREG0777, st_size=2945, ...}) = 0
fstat(5, {st_mode=S_IFREG0777, st_size=2945, ...}) = 0
fstat(5, {st_mode=S_IFREG0777, st_size=2945, ...}) = 0
mmap(NULL, 2945, PROT_READ, MAP_SHARED, 5, 0) = 0x7fd9b4804000
mmap(NULL, 266240, PROT_READPROT_WRITE, MAP_PRIVATEMAP_ANONYMOUS, -1, 0) = 0x7fd9b442f000
munmap(0x7fd9b4804000, 2945) = 0
close(5) = 0
getcwd("/home/www/wms2.xxx.com", 4096) = 26
lstat("/home/www/wms2.xxx.com/./XMCCacheHttpSession.php", 0x7ffff4e31060) = -1 ENOENT (No such file or directory)
lstat("/home/www/wms2.xxx.com/protected/vendor/wms/api/XMCCacheHttpSession.php", 0x7ffff4e31060) = -1 ENOENT (No such file or directory)
lstat("/home/www/wms2.xxx.com/protected/vendor/wms/XMCCacheHttpSession.php", 0x7ffff4e31060) = -1 ENOENT (No such file or directory)
lstat("/home/www/wms2.xxx.com/protected/extensions/log/XMCCacheHttpSession.php", 0x7ffff4e31060) = -1 ENOENT (No such file or directory)
lstat("/home/www/wms2.xxx.com/protected/modules/rights/components/XMCCacheHttpSession.php", 0x7ffff4e31060) = -1 ENOENT (No such file or directory)
lstat("/home/www/wms2.xxx.com/protected/modules/rights/XMCCacheHttpSession.php", 0x7ffff4e31060) = -1 ENOENT (No such file or directory)
lstat("/home/www/wms2.xxx.com/protected/components/XMCCacheHttpSession.php", {st_mode=S_IFREG0777, st_size=2612, ...}) = 0
open("/home/www/wms2.xxx.com/protected/components/XMCCacheHttpSession.php", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG0777, st_size=2612, ...}) = 0
fstat(5, {st_mode=S_IFREG0777, st_size=2612, ...}) = 0
fstat(5, {st_mode=S_IFREG0777, st_size=2612, ...}) = 0
fstat(5, {st_mode=S_IFREG0777, st_size=2612, ...}) = 0
mmap(NULL, 2612, PROT_READ, MAP_SHARED, 5, 0) = 0x7fd9b4804000
munmap(0x7fd9b4804000, 2612) = 0
close(5) = 0
sendto(4, "get 6cacd9674ad21aa083b5032b1a29"..., 39, MSG_DONTWAITMSG_NOSIGNAL, NULL, 0) = 39
recvfrom(4, 0x2806d88, 8196, 64, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN}], 1, 5000) = 1 ([{fd=4, revents=POLLIN}])
recvfrom(4, "VALUE 6cacd9674ad21aa083b5032b1a"..., 8196, MSG_DONTWAIT, NULL, NULL) = 128
lstat("/home/www/wms2.xxx.com/yii/web/CHttpCookie.php", {st_mode=S_IFREG0777, st_size=2772, ...}) = 0
lstat("/home/www/wms2.xxx.com/yii/web", {st_mode=S_IFDIR0777, st_size=4096, ...}) = 0
open("/home/www/wms2.xxx.com/yii/web/CHttpCookie.php", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG0777, st_size=2772, ...}) = 0
fstat(5, {st_mode=S_IFREG0777, st_size=2772, ...}) = 0
fstat(5, {st_mode=S_IFREG0777, st_size=2772, ...}) = 0
fstat(5, {st_mode=S_IFREG0777, st_size=2772, ...}) = 0
mmap(NULL, 2772, PROT_READ, MAP_SHARED, 5, 0) = 0x7fd9b4804000
munmap(0x7fd9b4804000, 2772) = 0
close(5) = 0
stat("/home/www/wms2.xxx.com/protected/extensions/redis/XMRedis.php", {st_mode=S_IFREG0777, st_size=2672, ...}) = 0
lstat("/home/www/wms2.xxx.com/protected/extensions/redis/XMRedis.php", {st_mode=S_IFREG0777, st_size=2672, ...}) = 0
lstat("/home/www/wms2.xxx.com/protected/extensions/redis", {st_mode=S_IFDIR0777, st_size=4096, ...}) = 0
lstat("/home/www/wms2.xxx.com/protected/extensions", {st_mode=S_IFDIR0777, st_size=4096, ...}) = 0
open("/home/www/wms2.xxx.com/protected/extensions/redis/XMRedis.php", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG0777, st_size=2672, ...}) = 0
fstat(5, {st_mode=S_IFREG0777, st_size=2672, ...}) = 0
fstat(5, {st_mode=S_IFREG0777, st_size=2672, ...}) = 0
fstat(5, {st_mode=S_IFREG0777, st_size=2672, ...}) = 0
mmap(NULL, 2672, PROT_READ, MAP_SHARED, 5, 0) = 0x7fd9b4804000
munmap(0x7fd9b4804000, 2672) = 0
close(5) = 0
socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 5
close(5) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 5
fcntl(5, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(5, F_SETFL, O_RDWRO_NONBLOCK) = 0
connect(5, {sa_family=AF_INET, sin_port=htons(22122), sin_addr=inet_addr("10.237.36.231")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=5, events=POLLINPOLLOUTPOLLERRPOLLHUP}], 1, 3000) = 1 ([{fd=5, revents=POLLOUT}])
getsockopt(5, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
fcntl(5, F_SETFL, O_RDWR) = 0
setsockopt(5, SOL_TCP, TCP_NODELAY, [1], 4) = 0
poll([{fd=5, events=POLLINPOLLPRIPOLLERRPOLLHUP}], 1, 0) = 0 (Timeout)
sendto(5, "*2\r\n$4\r\nAUTH\r\n$9\r\nxm_wms_rs\r\n", 29, MSG_DONTWAIT, NULL, 0) = 29
poll([{fd=5, events=POLLINPOLLPRIPOLLERRPOLLHUP}], 1, 0) = 0 (Timeout)
poll([{fd=5, events=POLLINPOLLERRPOLLHUP}], 1, 3000) = 1 ([{fd=5, revents=POLLIN}])
recvfrom(5, "+OK\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 5
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
Process 6011 detached
可以看得出,在执行XMRedis后进程6011 就死掉了。基本可以定位是php-redis出了问题。
继续追查最终发现了有段代码问题
public function conn() {
try {
$this->_redis->pconnect($this->host, $this->port, $this->timeout);
// Set client option. must AFTER connected
//var_dump(Redis::OPT_SERIALIZER,Redis::SERIALIZER_PHP);exit();
$this->_redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_PHP);
//$this->_redis->setOption(0, 0);
$this->_redis->auth("xm_wms_rs");
$this->connected = true;
} catch (RedisException $e) {
throw new CHttpException(500, "Redis occurs an error:" . $e->getMessage());
}
}
用红色的代码那段,就会报502错误,而用绿色代码这段就没问题。
setOption 这个是个神马东西呢?查了下php-redis api
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_NONE); // don't serialize data 不序列化数据
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP); // use built-in serialize/unserialize 用php内置的序列化
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_IGBINARY); // use igBinary serialize/unserialize 用扩展IGBINARY序列化
$redis->setOption(Redis::OPT_PREFIX, 'myAppName:'); // use custom prefix on all keys redis key前缀
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP); 用此就报502
为什么用php内置的序列化就会出错呢?到底发生了什么?
后来又安装了IGBINARY 扩展,还是不行。最后把php-redis安装了最新的版本2.24,再运行,就完全没问题了。
记录php5.4与php-redis冲突的解决
时间: 2024-11-02 17:38:21
记录php5.4与php-redis冲突的解决的相关文章
linux下使用flock文件锁crontab冲突如何解决
linux的crontab命令,可以定时执行操作,最小周期是每分钟执行一次.关于crontab实现每秒执行可参考我之前的文章<linux crontab 实现每秒执行> 现在有个问题,如果设定了任务每分钟执行一次,但有可能一分钟内任务并没有执行完成,这时系统会再执行任务.导致两个相同的任务在执行. 例如: <? // test.php for($i=0; $i<300; $i++){ echo date('Y-m-d H:i:s')."\r\n"; sleep(
android li...-listview触摸事件和点击事件冲突怎么解决额
问题描述 listview触摸事件和点击事件冲突怎么解决额 比如我按住listviem的某项往下拖动,其实就是下拉刷新动作.但是松开手后onitemclicklistener事件就会响应了 怎么在拖动listview的时候让点击事件不想应呢 action move down 会响应click事件啊 解决方案 滑动时,你可以用一个变量记录当前处于滑动状态,这样在抬起时可以判断这个标记,不要触发点击了 解决方案二: 在ListView中的Text添加spannableString 点击事件与List
系统-急急求极域教学与CS5冲突怎么解决
问题描述 急急求极域教学与CS5冲突怎么解决 多媒体教学极域软件去年用了一年,一直很好,昨天突然出现打开就蓝屏,换了交换机,也换了教师机,重做了几次系统,重装了几个不同版本的CS5,还是一打开CS5,打开教学软件就蓝屏,哪位高手帮帮我解决这个问题.不能上课了!!! 解决方案 蓝屏说明是驱动程序级出现了异常.这通常是驱动程序不兼容,杀毒软件(杀毒软件一般会写软件驱动)或者硬件本身故障(内存.CPU不稳定)造成的. 解决方案二: 如果重装系统没有改观,建议更换硬件.特别是检查下主板上的电容有没有失效
RealPlayer 11与kmplayer冲突的解决方法
RealPlayer 11与kmplayer冲突的解决方法 解决的具体方法如下: 1.下载一个RealPlayer 10的cook.dll文件,将它替换掉RealPlayer 11产生的cook.dll文件. 2.无论RealPlayer 11安装在哪里,把下载回来的cook.dll替换掉"C:Program FilesCommon FilesRealCodecs "下的cook.dll就可以解决冲突问题.
jquery直接的冲突怎么解决
问题描述 jquery直接的冲突怎么解决 用discuz自己做了个模板,做完后发现有冲突,在应用中心安装了带jquery的插件就会和模板有冲突,要怎样才能解决此问题,默认的有个style=""display: none;""这样的,有插件的地方就变style=""overflow: hidden;""了 解决方案 提出插件中的jquery 解决方案二: jquery一般是和你自己写的js代码的$争用有冲突,如果你的脚本定义过$
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法_php技巧
本文实例讲述了PHP针对常规模板引擎中与CSS/JSON冲突的解决方法,有一定的实用价值,具体分析如下: 本文主要针对对象为Smarty与Dwoo 在Smarty中经常会出现和CSS/JS的语法存在冲突的情况,因为二者都需要使用大括号{}.虽然可以改Smarty的界定符,但你在一个现存系统中,去修改所有相关代码,是不划算的.解决方法如下: 1. 避免同时出现 通过外部引用的方式避免.问题是避无所避.所以这种情况只适合少量简单的情况. 2. 修改Smarty界定符 3.可以使用Smarty的lit
jquery-两个js都用到了enter事件的监听突然发现有冲突,怎么解决?
问题描述 两个js都用到了enter事件的监听突然发现有冲突,怎么解决? 第一次遇到这样的问题: 我在头部页面上的搜索上用到了enter事件的监听,但是在其它页面中也有一个页面 用到了这个事件,我是分别写在两个js中的.但是,并不是enter事件,另一个是 esc 的触发事件. 然而在操作过程中,发现,只要两个页面碰到一起,就会出现:搜索按钮的enter事件 失灵,而ESC事件却能用.求解如何解决这一冲突问题,当在一个页面时都可以触发. 下面是function: /**ENTER 事件触发搜索*
Eclipse连接TFS开发时,遇到解决冲突如何解决
问题描述 Eclipse连接TFS开发时,遇到解决冲突如何解决 在Eclipse使用TFS时,出现冲突,想使用并入合并工具解决冲突,老是显示"合并引擎的至少一个输入是二进制文件.无法合并二进制文件."是怎么回事呢?
ThinkPHP和UCenter接口冲突的解决方法_php实例
本文分析了ThinkPHP和UCenter接口冲突的解决方法.分享给大家供大家参考,具体如下: 1.引出问题: 在UCenter中存在db和base两个类,恰巧这两个类也存在于ThinkPHP中,因此出现问题是必然的事情. db类:uc_client/lib/db.class.php base类:uc_client/model/base.php 2.问题解决方法: 只要消除"重名"即可解决,因此选择更改UCenter中的名称. 3.实际操作方法: db类: 更改db.class.php
滑动-SlidingPaneLayout跟Viewpager发生冲突怎么解决?
问题描述 SlidingPaneLayout跟Viewpager发生冲突怎么解决? SlidingPaneLayout是一个侧滑的菜单,而ViewPager是动态切换图片,也可以手动左右滑动图片, 将两个结合在一起,viewPager的手动左右滑图片失效,就是发生了冲突,想问下怎么解决? 解决方案 同样遇到这样的问题,http://stackoverflow.com/questions/17490899/using-androids-slidingpanelayout-with-viewpage