PHPの新機能。 PHPプロジェクトで作業し、PHPアプリケーションをデバッグできるようにxdebugを有効にします。本番サーバーでは、xdebugは別のチームによって処理されるため有効になりません。 run composerそれは私に警告を与えます
You are running composer with xdebug enabled. This has a major impact on
runtime performance.
開発中にxdebugを無効にしたくありません。開発環境でxdebugを実行すると、影響なし composer本番サーバーへのアプリのライブラリ/パフォーマンスのインストール)が必要になることを確認したかっただけです。
開発中にxdebugを無効にしたくありません。開発環境でxdebugを実行しても、composer本番サーバーへのアプリのライブラリ/パフォーマンスのインストールに影響がありません)を確認したかっただけです。
Xdebugをロードするだけで大きな影響があります。プロファイリング機能が有効になっていない場合でも、Composer実行速度が3倍または4倍遅くなります。
つまり、xdebugはデバッグには非常に貴重ですが、Composerの使用メモリと処理時間は増加します。
Composerの実行に対してXdebugを無効にする方法?
私の提案は、Composerを実行するための小さな呼び出しヘルパーを作成することです。
ヘルパーは、特にComposer用に設定されたカスタムphp.ini
でPHPを呼び出すbashまたはバッチスクリプトです。それを呼び出してみましょう: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スクリプトのアイデアを複製するだけです。
また、Composer FAQで質問に対する完全な答えを見つけることができます。
https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer
それはほんの数時間前に追加/更新されました。
いくつかの選択肢(個別のiniファイルを使用する代わりに)も言及されています here 。
Webスクリプトと同様に、CLIスクリプトの実行も遅くなることを期待してください。
追加のランタイムパフォーマンスが必要な場合は、CLIでのみXDebugを無効にできます。 PHPインストールを設定して、CLIとサーバーに異なるiniファイルを使用するように、 この回答が示唆するように。
Composerの最新バージョンは、CLI SAPIに対してデフォルトでXDebugを有効にすることで回避できます。検出された場合に備えて、XDebug拡張を無効にして新しいPHPプロセスを生成します。
次の環境変数を設定することにより、この動作を無効にできます。
COMPOSER_ALLOW_XDEBUG=1
ドキュメントでこれを見つけました: https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer
これを修正するには、PHP 7より前に、php.iniファイルから拡張機能をコメントアウトすることを提案します。ただし、PHP 7彼らはもうそこにいません。
代わりに、phpdismod
コマンドを使用します。
Sudo phpdismod -s cli xdebug
-sフラグは、FPMではなくCLI SAPI(/etc/php/7.0/cli)のXdebugを無効にするように指示します。
そしてそのように、警告メッセージは消えるべきです。 PHPを再起動する必要はありません。
これに加えて、インストールプロセスを高速化するためにパッケージを並行してダウンロードする plugin があります。
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
フラグを使用すると、構成値を動的に設定できるため、拡張機能を含めることができます。
php-composer.ini
という名前のファイルを、次のコンテンツ(composerの最小の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:\ProgramData\ComposerSetup\bin\composer.phar" %*
このファイルをシステムパスまたはプロジェクトルートに追加します。 cmz
の代わりにcomposer
を使用すると、そのメッセージが表示されなくなり、うまくいけばcomposerの速度が上がるでしょう。
注:一部のパッケージには、特定のphp拡張機能が必要です。 php-compsoer.ini
ファイルに追加するか、--ignore-platform-reqs
スイッチをcmz.bat
ファイルに追加する必要があります