• php站点ajax请求返回数据异常处理的经历


    一、问题描述

    站点运行1年多,突然出现问题,ajax请求数据,正确的数据应该是

    {isError: false, message: "添加成功"}
    

    前面莫名多了一串字符

    goods_id=385&type=product&goods_num=1&work_id=398239&is_rows=true
    

    二、 调试过程

    1.检查控制器的方法是否正确,通过输出 调试字符 ,确定异常字符出现的位置

    2.发现字符再控制器调用之前输出,检查框架的拦截器或app加载流程,这种比较尴尬了,整个框架没有完整调试log,断点调试导致后面不执行,检查app加载过程中所有问题,无法浮现问题,

    通过

    get_included_files
    

    查看app所有加载文件,检查文件是否有输出,无结果

    通过入口文件添加特定的参数过滤

    if($_GET['action'] == 'joinCart')
    {
    	echo 5555;
    }
    

    发现 异常字符不是在 app加载之前 输出的, 基本断定时 php进程问题

    3.检查 Nginx配置和php-pfm配置, 重启两个进程,ok 数据正常了

    php-pfm的命令
    master进程可以理解以下信号

    INT, TERM 立刻终止
    QUIT 平滑终止
    USR1 重新打开日志文件
    USR2 平滑重载所有worker进程并重新载入配置和二进制模块
    

    示例:
    php-fpm 关闭:

    kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
    

    php-fpm 重启:

    kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
    

    查看php-fpm进程数:

    ps aux | grep -c php-fpm
    

    如果没有php-fpm.pid文件,使用进程 pid

    kill -USR2 24216
    

    三、知识参考文章

    CGI、FastCGI和PHP-FPM关系图解

    https://www.awaimai.com/371.html
    

    实战Nginx与PHP(FastCGI)的安装、配置与优化

    https://www.cnblogs.com/liangxiaofeng/p/5974834.html
  • 相关阅读:
    IsDefined的问题
    设计匠艺模型
    真实案例引起的对系统健壮性的思考
    软件系统的稳定性
    LA工作第二周体会
    LA工作第一周体会
    https://blog.csdn.net/qq_26264237/article/details/90575165
    Maven项目配置logback
    Java 工具 Hutool4.0.0 正式发布:从懵懂到成熟
    IDEAidea中解决Java程序包不存在问题
  • 原文地址:https://www.cnblogs.com/sentangle/p/14780725.html
Copyright © 2020-2023  润新知