标签: xdebug

使 PHP 性能分析可预测

我正在使用 xdebug 和 PHP 进行一些性能分析。但是当我不止一次运行同一个脚本时,我经常得到非常不同的时间。所以很难知道对结果有多大信心。

很明显,一台机器上发生的很多事情都会影响 PHP 的性能。但是我能做些什么来减少变量的数量,从而使多个测试更加一致?

我在 Mac OS X 上的 Apache 下运行 PHP。

php profiling xdebug

4
推荐指数
1
解决办法
361
查看次数

在Vim中没有启用Python

我试图让Xdebug vim插件工作,这取决于python.这是我的环境:Windows 7 Professional 64bit,Vim 7.3.我为这个插件设置了一切,但是当我点击F5时没有任何反应.我找到了一些博客,介绍了一些在Windows上运行的额外步骤.所有这些都强调要确保正确安装正确版本的Python.我查看了debugger.vim文件中的插件代码,并靠近顶部检查以查看python是否可用,如果不是则退出.我插入一个echo命令告诉我是否安装了python,并且确实弹出一个消息框告知我这样的情况.这是修改后的代码:

if !has("python")
    echo 'python NOT loaded'
    finish
endif
Run Code Online (Sandbox Code Playgroud)

根据这个博客http://phphints.wordpress.com/2008/08/20/add-debug-support-to-vim/我需要安装包含dll vim的python版本,当我运行时来自vim的version命令.我的报告:

-DDYNAMIC_PYTHON_DLL=\"python27.dll\" -DDYNAMIC_PYTHON3_DLL=\"python31.dll\"
Run Code Online (Sandbox Code Playgroud)

所以我安装了64位版本的python 2.7.1.即使python27.dll在System 32文件夹中也是如此.我也尝试将python.exe的位置添加到PATH,但这没有帮助.我也尝试安装64位版本的python 3.1.3,但这没有帮助.有任何想法吗?

python vim xdebug vim-plugin

4
推荐指数
1
解决办法
5677
查看次数

Xdebug vs xhprof

我正在使用xdebug在我的PHP代码中分析多卷曲的使用,并且数字没有加起来总数,所以我使用xhprof代替,这似乎提供了更好的数据.为什么xdebug提供看似糟糕的分析信息,有没有办法解决它?我更喜欢使用xdebug的分析器,因为它有更多的工具.

php xdebug xhprof

4
推荐指数
1
解决办法
4141
查看次数

xdebug.ini和php.ini有什么区别

最近,我在ubuntu 16.04机器上安装了lamp和php-xdebug。我发现现在有以下文件

/etc/php/7.0/apache2/conf.d/20-xdebug.ini

/etc/php/7.0/cli/conf.d/20-xdebug.ini

/etc/php/7.0/mods-available/xdebug.ini
Run Code Online (Sandbox Code Playgroud)

我在徘徊这些文件和设置之间的区别是什么 /etc/php/7.0/apache2/php.ini受到这些影响。

此外,根据最佳做法,应使用以下哪个文件?

如果在这些文件中使用不同的值重复配置,则优先?

例如,如果xdebug.remote_port = 9000在中/etc/php/7.0/apache2/php.ini和中/etc/php/7.0/mods-available/xdebug.ini设置了xdebug.remote_port = 9001,则将选择哪个值?

php linux apache xdebug

4
推荐指数
1
解决办法
1224
查看次数

在 PHP-FPM Docker 容器中配置 Xdebug

我基本上使用此配置为 Symfony 项目https://github.com/maxpou/docker-symfony创建开发环境。它运行但我无法让 Xdebug 工作:当我设置断点时它不会停止。

我还尝试将 Xdebug 配置为使用 connect_back 但这不起作用。也许这与我在 Windows 机器上开发有关?任何见解都非常感谢。

Dockerfile PHP:FPM

# See https://github.com/docker-library/php/blob/master/7.1/fpm/Dockerfile
FROM php:7.1-fpm
ARG TIMEZONE

MAINTAINER Maxence POUTORD <maxence.poutord@gmail.com>

RUN apt-get update && apt-get install -y \
    openssl \
    git \
    unzip

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer --version

# Set timezone
RUN ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo ${TIMEZONE} > /etc/timezone
RUN printf '[PHP]\ndate.timezone = "%s"\n', ${TIMEZONE} > /usr/local/etc/php/conf.d/tzone.ini
RUN "date"

# Type …
Run Code Online (Sandbox Code Playgroud)

php windows xdebug phpstorm docker-compose

4
推荐指数
1
解决办法
1万
查看次数

使用 Docker、nginx、PHP7-FPM 和 Xdebug 进行 IDE 调试

我目前正在 macOS 上准备一个开发堆栈,docker-compose以便能够在PHP7-FPM(端口:9000)和nginx(端口:80)服务器上使用Xdebug(端口:9009)。

显然配置没问题,但我无法通过 IDE 进行调试。

这是我的设置:

我的.env文件:

APP_NAME=testeXdebug
HOST_SERVER_NAME=myapp
HOST_IP=docker.for.mac.localhost
# Use docker.for.mac.localhost - for OS X
# Use docker.for.win.localhost - for Windows
Run Code Online (Sandbox Code Playgroud)

DockerfilePHP7-FPM + Xdebug的:

FROM php:7.2-fpm

RUN pecl install xdebug \
    && docker-php-ext-enable xdebug
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml文件:

version: '3.5'

services:
  web:
    image: nginx:1.15.2
    ports:
      - '80:80'
    volumes:
      - '.:/usr/share/nginx/html'
      - './config/default.conf:/etc/nginx/conf.d/default.conf'
      - '/tmp/${APP_NAME}/web:/var/log/nginx'
    env_file:
      - '.env'
    depends_on:
      - 'php-fpm'
    links:
      - 'php-fpm'

  php-fpm:
    build: './docker' …
Run Code Online (Sandbox Code Playgroud)

xdebug nginx docker-compose fpm php-7.2

4
推荐指数
1
解决办法
5568
查看次数

使用 Docker Compose 和 WordPress 镜像设置 Xdebug

我正在尝试使用 docker-compose 设置 Xdebug。我使用的是 PhpStorm IDE,我使用的 Docker 映像安装了 PHP 7.2。我正在尝试在此 WordPress 图像的上下文中执行此操作。这是我当前的 docker-compose.yml 文件:

    version: '3'

    services:
   db:
     image: mysql:5.7
     ports: 
       - "3306:3306"
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   web-build-scripts:
     build: .
     depends_on:
       - db
     ports:
       - "8028:80"
       - "8029:8029"

     volumes:
       - ./themes/XXXXX:/var/www/html/wp-content/themes/XXXX
       - ./plugins/XXXX:/var/www/html/wp-content/plugins/XXXXX
       - ./plugins/XXXXX:/var/www/html/wp-content/plugins/XXXXX
       - ./plugins/XXXXX:/var/www/html/wp-content/plugins/XXXXX
       - ./plugins/XXXXX:/var/www/html/wp-content/plugins/XXXXX
       - ./plugins/XXXXX:/var/www/html/wp-content/plugins/XXXXX
       - ./plugins/XXXXX:/var/www/html/wp-content/plugins/XXXXX
       - ./plugins/XXXXX:/var/www/html/wp-content/plugins/XXXXX
       - ./plugins/XXXXX:/var/www/html/wp-content/plugins/XXXXX


     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       VIRTUAL_HOST: leasepilot.local

volumes:
    db_data: …
Run Code Online (Sandbox Code Playgroud)

php xdebug docker docker-compose

4
推荐指数
1
解决办法
6011
查看次数

使用除 xdebug 之外的其他代码覆盖率驱动程序

我想使用pcov而不是xdebug来生成代码覆盖率。

我正在使用 Docker 并且安装了 xdebug。

如果我运行以下命令,我可以确定 xdebug 不会影响测试执行吗?

php -d xdebug.default_enable=0 -d pcov.enabled=1 path/to/phpunit --coverage-text
Run Code Online (Sandbox Code Playgroud)

我读到pcov 可能更快,但据我所知 xdebug 必须被禁用。

是否最好执行以下操作来实现最快的覆盖率而不是运行上述命令?

  1. 删除/截断 xdebug 配置
  2. 运行测试

    php -d pcov.enabled=1 path/to/phpunit --coverage-text
    
    Run Code Online (Sandbox Code Playgroud)
  3. 恢复 xdebug 配置

phpunit xdebug pcov

4
推荐指数
1
解决办法
878
查看次数

使用 SSH 连接编辑代码时使用 Xdebug 进行 VSCode 远程调试

pathMappings当我使用 VSCode 远程资源管理器 SSH 插件从 Windows 机器打开 Linux 网络服务器上的远程目录时,不确定如何在 VSCode 调试配置中进行配置。如果我在本地存储源的副本并使用本地源启动 VSCode,则调试工作正常。

Web 服务器是 Ubuntu 14 Lamp,本地系统是 Windows 10。使用 VSCode 中的远程资源管理器插件从 Windows 工作站 ssh 到 Linux 服务器并在服务器上编辑源。

当我将源文件存储在本地并通过打开本地副本启动 VSCode 时,这在 VSCode 调试配置中工作正常。

        pathMappings": {
           "/var/www/html/codeigniter/": "${workspaceRoot}",
        },
Run Code Online (Sandbox Code Playgroud)

当我使用远程资源管理器在 Windows 上启动 VSCode 时,此配置不起作用。我通过远程资源管理器连接到这个根文件夹/var/www/html/codeigniter/

当我通过 VSCode 的 SSH 插件打开 Linux 服务器上的文件时,我希望能够识别断点并停止代码,但事实并非如此,并且代码运行时不会遇到断点。

php xdebug visual-studio-code

4
推荐指数
1
解决办法
6553
查看次数

如何让 PhpStorm 使用 Xdebug 忽略来自某个域的传入连接

因此,我在多个相互通信的域上有多个项目,所有项目都映射到我的本地 IP 127.0.0.1。使用 Xdebug 调试一个时,有时会出现一个“传入连接”弹出窗口,用于我拥有的其他项目之一。

我通常告诉它不要听那些连接,因为我只希望它听我目前正在工作的项目,但像个白痴一样,我在调试单独的 Laravel 项目时不小心接受了一个 WordPress 项目的连接.

现在每次我想调试我的 Laravel 项目,至少是它连接到 WordPress 的部分,我必须处理调试被 WordPress 的中断 wp-cron.php。我一生都无法找到一种方法来告诉 PhpStorm 不要听来自那个 WordPress 项目的连接,因为我不小心允许了它一次。

有没有办法做到这一点?

或者例如,如果我有domain1.testand domain2.test,有什么方法可以告诉 PhpStorm 只听domain1.test而不是任何其他域(或删除其他域,如果接受?)

xdebug phpstorm

4
推荐指数
1
解决办法
49
查看次数