warning - PHP compositor xdebug advertencia
vendor autoload php cakephp (5)
No quiero deshabilitar xdebug cuando estoy desarrollando. Solo quería confirmar que la ejecución de xdebug en el entorno dev no debería tener ningún impacto en la instalación de las bibliotecas / el rendimiento de la aplicación en el servidor de producción.
Hay un gran impacto de solo cargar Xdebug. Disminuye la velocidad del compositor en 3x o 4x, incluso cuando la función de creación de perfiles no está habilitada.
En otras palabras: xdebug es invaluable para la depuración, pero aumenta la memoria utilizada y el tiempo de procesamiento de Composer.
¿Cómo deshabilitar Xdebug for Composer se ejecuta?
Mi sugerencia es escribir un pequeño ayudante de invocación para ejecutar Composer.
El ayudante es un script de bash o batch que llama a PHP con un php.ini
personalizado, especialmente configurado para Composer. Llamémoslo: php.ini-composer
.
Puede copiar su php.ini
actual y ajustarlo para la ejecución de Composer, eliminando xdebug o comentándolo, así ;zend_extension = "/path/to/my/xdebug.so"
.
Mientras esté en ello: el ajuste memory_limit=-1
es útil.
El comando completo se ve así en Windows: php.exe -c php.ini-composer composer.phar %*
Solo tienes que clonar la idea para un guión de bash.
Y puede encontrar la respuesta completa a su pregunta en las Preguntas frecuentes de Composer.
https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer
Fue agregado / actualizado hace apenas unas horas.
Algunas alternativas (en lugar de usar un archivo ini separado) también se mencionan here .
Nuevo en PHP. Trabajando en un proyecto de PHP y tener xdebug habilitado para poder depurar mis aplicaciones php. El servidor de producción no tiene xdebug habilitado porque es manejado por otro equipo. En mi máquina local, cuando ejecuto compositor, aparece una advertencia que dice:
You are running composer with xdebug enabled. This has a major impact on
runtime performance.
No quiero deshabilitar xdebug cuando estoy desarrollando. Solo quería confirmar que la ejecución de xdebug en el entorno dev no debería tener ningún impacto en la instalación de las bibliotecas / el rendimiento de la aplicación en el servidor de producción.
Al igual que con los scripts web, espere que los scripts de CLI también se ejecuten más lentamente.
Si necesita el rendimiento de tiempo de ejecución agregado, puede deshabilitar XDebug solo en CLI. Configure su instalación de PHP para que use diferentes archivos ini para CLI y su servidor, como sugiere esta respuesta.
Cree un archivo llamado php-composer.ini
algún lugar con el siguiente contenido (la configuración mínima de php para el compositor):
extension_dir = "D:/php/ext/" ;according to your system
extension=php_openssl.dll
memory_limit=-1 ;optional
Ahora cree un archivo llamado cmz.bat
con el siguiente contenido. (editar las rutas en consecuencia)
@ECHO OFF
php -c "D:/php-composer.ini" "C:/ProgramData/ComposerSetup/bin/composer.phar" %*
agregue este archivo a la ruta de su sistema o a la raíz de su proyecto. Ahora use cmz
lugar de composer
y no verá ese mensaje y, con suerte, la velocidad del compositor aumentará.
Nota: Algunos paquetes necesitan extensiones php específicas. debe agregarlos al archivo php-compsoer.ini
o agregar el php-compsoer.ini
--ignore-platform-reqs
al archivo cmz.bat
En una nueva descarga de Symfony 3.1 y PHP 7.0, puedes ejecutar lo siguiente (habiéndolo editado para incluir la ruta a tu archivo composer.phar):
php -n -d extension=json.so -d extension=phar.so -d extension=pdo.so -d extension=ctype.so /path/to/composer update
Si tiene proveedores adicionales en su archivo composer.json
, puede encontrar que tienen una dependencia en una extensión, por lo que debe incluirlo agregando -d extension=name_of_extension.so
a la lista.
Lo que sucede aquí es que la bandera -n
va con los valores predeterminados de PHP: no carga ningún archivo de configuración ini
PHP, por lo que XDebug nunca se carga. Luego, cada uno de los indicadores -d
permite establecer dinámicamente los valores de configuración, para que pueda incluir extensiones.
Las versiones modernas de Composer pueden solucionar el hecho de tener XDebug habilitado de forma predeterminada para la CLI SAPI. Genera un nuevo proceso PHP con la extensión XDebug deshabilitada en caso de que se detecte.
Puede deshabilitar este comportamiento configurando la siguiente variable de entorno:
COMPOSER_ALLOW_XDEBUG=1
Encontré esto en la documentación: https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer