xdebug.remote_enable=1
を設定してxdebugを有効にすると、Apacheサーバーは非常に遅くなります。設定を0
に変更すると、正常です。
ここで同じ質問を見つけました: XDebug really slow 、しかし答えは役に立たない。プロファイリングを有効にしませんでした:
xdebug.profiler_enable=0
xdebug.auto_trace = 0
xdebug.trace_output_dir = /tmp/xdebug
xdebug.trace_output_name = trace.%c
/ tmp/xdebugフォルダーの下に何もないことを確認しました。
Xdebugリモートデバッグが有効で、PHPStormでデバッグリスニングを有効にすると、ブレークポイントで停止するのに少し時間がかかりますが、phpstormデバッグリスニングを無効にするほど遅くはありません。
私の環境は:php + Apache + xdebugローカルcentos VM、mysql dbおよびPHPStorm開発用のWindowsデスクトップ。 MySQLは遅くありません。
ヘルプに感謝します。
私の場合、これは
xdebug.remote_autostart = 1
php.iniで設定します。これにより、xdebugはすべての要求でリモートデバッガーに接続しようとします。私はいくつかのPHP=スタイル、auto_preppend_fileおよび他のPHPファイルをリクエストで処理し、それぞれについて約2秒待機しました。 15秒程度。
xdebug.remote_autostart = 0
問題を完全に解決しました。 xdebugは、デバッグCookieが存在する場合にのみ接続します。 この修正が機能するためにデバッグセッションにない場合は、デバッグクッキー/パラメータを削除する必要があることに注意してください。
また、XDebugでパフォーマンスが低下した(ミリ秒ではなく6秒でCaptchaを読み込む)このページのコメントを読んで、原因を特定する方法を見つけました。
プロファイラをオフにし、ロード時間を3で割った。まだ遅いが、すでに良くなっている。
xdebug.profiler_enable = 0
さらに参照...誰かが同じ/同様の問題を抱えている場合...(60秒のタイムアウト)
最初の二重チェックxdebug.remote_autostart
は、自動接続を回避するために無効になっています。@LazyOne
が指摘したように、@Tomáš Fejfar
も説明しています。
xdebug.remote_autostart
Type:ブール値、デフォルト値:0
通常、特定のHTTP GET/POST変数を使用してリモートデバッグを開始する必要があります( リモートデバッグを参照 )。この設定が1に設定されている場合、Xdebugは常にリモートデバッグセッションを開始し、クライアントに接続しようとします(GET/POST/COOKIE変数が存在しませんでした。
これにより、デバッグCookieが存在しなかった場合、通常の速度を回復します.
しかし!...サーバーから非常に遅い応答(60秒のタイムアウト)を取得しますCookieが手動でアクティブ化されたとき。
したがって、 Xdebug Documentation を読んで設定を確認した後、
私はxdebug.remote_connect_back
を有効にしていたことがわかりました
xdebug.remote_connect_back
Type:ブール値、デフォルト値:0、Xdebug> 2.1で導入
有効にすると、xdebug.remote_Host設定は無視され、XdebugはHTTPリクエストを行ったクライアントへの接続を試みます。 $ _SERVER ['REMOTE_ADDR']変数をチェックして、使用するIPアドレスを見つけます。使用可能なフィルターがないため、アドレスがxdebug.remote_Hostと一致しない場合でも、Webサーバーに接続できるユーザーは誰でもデバッグセッションを開始できることに注意してください。
そのため、サーバーへのすべての呼び出しがデバッグされようとしていたため、サーバーが非常に遅くなり、安全性も低下しました。
このオプションを無効にし、マシンを指すxdebug.remote_Host
が明確に定義されていることを確認しました。許容できる応答が1秒以内にありました。 Cookieが有効になっている場合のみ。
要するに、私の設定ファイルは次のようになります:
zend_extension = "/absolute/path/to/your/xdebug-extension.so"
xdebug.remote_enable = 1
xdebug.remote_autostart = 0
xdebug.remote_connect_back = 0
xdebug.remote_Host = "192.168.1.2"
xdebug.remote_port = 9000
xdebug.remote_handler = "dbgp"
xdebug.remote_mode = req
xdebug.remote_log = "/tmp/xdebug.log"
注:php.iniではなく、etc/php5/conf.d/xdebug.ini
ファイルでこの変更を行いました。
Edit:
As@Riim&@jdunk指摘する 両方のおかげで 、設定することもできます:
*詳細はコメントをご覧ください
xdebug.remote_cookie_expire_time = 0
// or
xdebug.remote_cookie_expire_time = -9999
PHPStorm 7.1とXampp 1.8.2によってインストールされたApacheサーバーを使用していますが、これらはすべてWindows 8.1で使用されています。 Chromeと、ブレークポイントが設定されているデバッグモードのPHPStormとの間の相互運用性が遅いことがありました。
XDebug dllの最新バージョンをインストールすることで速度が著しく向上し(ダウンロードするバージョンを決定するには XDebugウィザード を使用します)、php/ext dirにdllをコピーし、php.iniを変更して新しいXDebug dllがロードされます。 Apacheを停止して、違いを確認します。
内部Eclipse Webブラウザーを使用して、Eclipse(PDT付きのJuno)でwebappをデバッグするときに、同様のパフォーマンスの向上が発生したことを確認できました。
私の場合、PHPStormに設定された200以上のブレークポイントがxdebugによるすべてのリクエストで評価されるため、パフォーマンスが低下していました。
PHPStormでこれらのブレークポイントをクリアすると、要求ごとにパフォーマンスが60秒から6秒に増加しました。
ポート9000で他のサービスが動作している場合、Xdebugはポート9000で自分のサーバーに接続できず、リクエストごとにタイムアウトになるため、速度が遅くなることがあります。
XDebugがリッスンしているデフォルトのポート(9000)を変更してみてください。この例では9090を使用しましたが、空いているポートであれば何でも使用できます。
xdebug.remote_port=9090
次に、xDebugがIDEでリッスンしているポートを忘れずに変更します。VisualStudio Codeを使用しています。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.Microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9090,
"log": true
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9090
}
]
}
ここで発生するネットワークタイムアウトがある可能性があります。何が問題なのかを知る最良の方法は、コマンドラインスクリプトをデバッグすることです。それでも同じ問題がある場合は、strace
を使用して、何がハングしているかを確認します。
export XDEBUG_CONFIG="idekey=yourname"
strace -tt -o /tmp/strace.log php full/path/to/script.php
次に、/tmp/strace.log
そして、スローダウンが発生する場所を確認します。
私にとっては、Xdebugバージョン2.7.2
は、ベンダーのautoload.php Xdebugバージョン2.6.0
で問題ありませんでした。