PHP 新手。处理PHP项目并启用xdebug以便能够调试我的php应用程序。生产服务器未启用 xdebug,因为它由另一个团队处理。在我的本地机器上,当我运行作曲家时,它会给我一个警告,说
You are running composer with xdebug enabled. This has a major impact on
runtime performance.
我不想在开发时禁用 xdebug。只是想确认在开发环境中运行 xdebug 应该不会影响作曲家在生产服务器上安装应用程序的库/性能。
我不想在开发时禁用 xdebug。只是想确认在开发环境中运行 xdebug 应该不会影响作曲家在生产服务器上安装应用程序的库/性能。
仅加载 Xdebug 就有巨大的影响。即使未启用性能分析功能,它也会使 Composer 运行速度减慢 3 倍或 4 倍。
换句话说:xdebug 对于调试非常宝贵,但增加了 Composer 使用的内存和处理时间。
如何为作曲家运行禁用 Xdebug?
我的建议是编写一个小的调用助手来运行 Composer。
该助手是一个使用自定义php.ini
调用PHP的bash或批处理脚本,特别是为Composer配置的。让我们称之为:php.ini-composer
.
您可以复制当前php.ini
并通过删除 xdebug 或将其注释掉来针对 Composer 运行进行调整,如下所示:;zend_extension = "/path/to/my/xdebug.so"
.
当你在它的时候:设置memory_limit=-1
也很有帮助。
完整的命令在Windows上如下所示:php.exe -c php.ini-composer composer.phar %*
只需克隆 bash 脚本的想法。
您可以在作曲家常见问题中找到您问题的完整答案。
https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer
它是几个小时前添加/更新的。
这里还提到了一些替代方案(而不是使用单独的 ini 文件(。
Composer 的现代版本可以解决默认情况下为 CLI SAPI 启用 XDebug 的问题。它会生成一个新的 PHP 进程,并在检测到 XDebug 扩展时禁用它。
您可以通过设置以下环境变量来禁用此行为:
COMPOSER_ALLOW_XDEBUG=1
在文档中找到了这一点:https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer
与 Web 脚本一样,预计 CLI 脚本也会运行得更慢。
如果需要增加运行时性能,只能在 CLI 上禁用 XDebug。设置您的 PHP 安装,以便它为 CLI 和您的服务器使用不同的 ini 文件,正如这个答案所暗示的那样。
为了解决这个问题,在 PHP 7 之前,人们会建议从你的 php.ini 文件中注释掉扩展名。但是,在 PHP 7 中,它们不再存在。
相反,我们使用 phpdismod
命令。
sudo phpdismod -s cli xdebug
-s 标志告诉它禁用 CLI SAPI (/etc/php/7.0/cli( 的 Xdebug,而不是 FPM。
就这样,警告消息应该消失了。无需重新启动 PHP。
除此之外,还有一个插件可以并行下载软件包以加快安装过程。
在某处创建一个名为 php-composer.ini
的文件,其中包含以下内容(作曲家的最低 php 配置(:
extension_dir = "D:/php/ext/" ;according to your system
extension=php_openssl.dll
memory_limit=-1 ;optional
现在创建一个名为 cmz.bat
的文件,其中包含以下内容。(相应地编辑路径(
@ECHO OFF
php -c "D:php-composer.ini" "C:ProgramDataComposerSetupbincomposer.phar" %*
将此文件添加到系统路径或项目根目录。现在使用 cmz
而不是 composer
,您将不会看到该消息,希望作曲家的速度会提高。
注意:某些软件包需要特定的 php 扩展。 您需要将它们添加到php-compsoer.ini
文件或附加--ignore-platform-reqs
切换到cmz.bat
文件
在全新下载的Symfony 3.1和PHP 7.0上,您可以运行以下命令(已对其进行编辑以包含composer.phar文件的路径(:
php -n -d extension=json.so -d extension=phar.so -d extension=pdo.so -d extension=ctype.so /path/to/composer update
如果您的composer.json
文件有任何额外的供应商,您可能会发现它们依赖于扩展,因此您需要通过将-d extension=name_of_extension.so
添加到列表中来包含该供应商。
这里发生的事情是 -n
标志与 PHP 默认值一起使用 - 它不会加载任何ini
PHP 配置文件,因此永远不会加载 XDebug。然后,每个-d
标志都允许您动态设置配置值,以便您可以包含扩展。