• docker内php使用xdebug性能分析


    官方文档 Xdebug: Documentation » Profiling

    docker内构建php8+nginx 可参考 docker构建nginx+php8_fangdong88的博客-CSDN博客_docker nginx php 

    docker 安装 xdebug

    1. pecl install xdebug
    2. docker-php-ext-enable xdebug

    php --ini 查看php配置路径

    修改 docker-php-ext-xdebug.ini 配置文件, 如果无法使用vi命令,安装vim

    docker内安装vim

    1. apt-get update
    2. apt-get install vim

    编辑 docker-php-ext-xdebug.ini

    1. zend_extension=xdebug
    2. xdebug.mode=profile
    3. xdebug.start_with_request=XDEBUG_TRIGGER // 可选,如果不配置这个所有访问都会生成分析文件,启用的话可通过url参数的形式来触发分析,例如 http://localhost/inde.php?XDEBUG_TRIGGER
    4. xdebug.output_dir=/www   // 替换为你docker内与本地目录映射的地址
    5. xdebug.use_compression=false

    重启 docker php

    安装xdebug脚本分析软件

    1. brew install qcachegrind
    2. 启动命令 qcachegrind

    调用api,会在上面设置的 xdebug.output_dir 目录里生成xdebug分析文件,在qcachegrind里打开即可看到分析内容

    我本地是php7.2的,之前通过brew install php@7.2 安装的

    上面执行完后php无法正常运行了,提示

    1. dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.68.dylib
    2. Referenced from: /usr/local/opt/php@7.2/bin/php
    3. Reason: image not found
    4. [7]   63371 abort     php -m

    我猜是安装qcachegrind导致的,解决办法,只有重装php

    1. brew upgrade php@7.2
    2. ==> Upgrading 1 outdated package:
    3. php@7.2 7.2.34_2 -> 7.2.34_4
    4. Error: php@7.2 has been disabled because it is deprecated upstream!

    因为我不想换版本,本来想直接通过升级来解决,但是官方brew又不支持php7.2了,只有想其他办法来重装.

    先卸载原来的php

    1. brew services stop php@7.2
    2. brew uninstall php@7.2

    重装php7.2

    1. brew tap shivammathur/php
    2. brew install shivammathur/php/php@7.2

    安装成功提示

    1. The php.ini and php-fpm.ini file can be found in:
    2.   /usr/local/etc/php/7.2/
    3. php@7.2 is keg-only, which means it was not symlinked into /usr/local,
    4. because this is an alternate version of another formula.
    5. If you need to have php@7.2 first in your PATH, run:
    6. echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.zshrc
    7. echo 'export PATH="/usr/local/opt/php@7.2/sbin:$PATH"' >> ~/.zshrc
    8. For compilers to find php@7.2 you may need to set:
    9. export LDFLAGS="-L/usr/local/opt/php@7.2/lib"
    10. export CPPFLAGS="-I/usr/local/opt/php@7.2/include"
    11. To restart shivammathur/php/php@7.2 after an upgrade:
    12. brew services restart shivammathur/php/php@7.2
    13. Or, if you don't want/need a background service you can just run:
    14. /usr/local/opt/php@7.2/sbin/php-fpm --nodaemonize

    然后根据上面提示,启动php7.2

    brew services start shivammathur/php/php@7.2

    惊奇的发现之前安装的php扩展都还在,什么都不用改,很nice.

  • 相关阅读:
    测试Python读写xml配置文件(续)
    开发者,MySQL专栏完更,助你轻松从安装到入门进阶
    01-Node中的系统模块:fs文件模块、path路径模块、正则、http模块
    使用 PPO 算法进行 RLHF 的 N 步实现细节
    使用 Transformers 为多语种语音识别任务微调 Whisper 模型
    以太坊硬分叉愈演愈烈:为了分叉而分叉or保全矿工利益?
    第二章Redis概述安装
    【附源码】Python计算机毕业设计木几画室管理系统
    iptables防火墙
    外包干了2个月,技术退步明显...
  • 原文地址:https://blog.csdn.net/fangdong88/article/details/125414034