バックグラウンドでリモートサーバーにHTTPリクエストを送信するコードを特定する方法はありますか?
開発マシンでレセプションがむらがあると、localhostで実行している場合でも、多くのショップで読み込みに時間がかかることに気付きました。
一部のリモートサーバーが接続が不安定なために応答に時間がかかるためだと感じています。これらのリクエストを特定して削除したいと思います。たとえば、外部サーバーがダウンしているか遅い場合など、ライブインストールが遅くなるのではないかと心配です。
バックグラウンドでリモートサーバーにHTTPリクエストを送信するコードを特定する方法はありますか?
開発マシンでレセプションがむらがあると、localhostで実行している場合でも、多くのショップで読み込みに時間がかかることに気付きました。
一部のリモートサーバーが接続が不安定なために応答に時間がかかるためだと感じています。これらのリクエストを特定して削除したいと思います。たとえば、外部サーバーがダウンしているか遅い場合など、ライブインストールが遅くなるのではないかと心配です。
回答:
スタック内のそれぞれのWebサーバーでコマンドライン(Bash)関数を使用してそれを行います。
monitor_outbound ()
{
tcpflow -p -c -i bond0 '( port 80 or port 443 ) and ' $(ip addr list | grep -Eoh "([0-9]{1,3}\.){3}[0-9]+" | sort -u | awk '{print "src host " $1 " or"}' | tr '\n' ' ' | sed -E 's# or $##g') | grep --line-buffered -oE '(GET|POST|HEAD) .* HTTP/1.[01]|Host: .*' | sed --unbuffered "s/^/$(date "+%b %d %T"): /g"
}
それ以外にも、MagentoのCURL / fopenメソッドを利用できます(ただし、コアメソッドを使用する必要があると想定しています)。多くの場合、カスタムモジュールはopen file_get_contents()
またはcurl
メソッドを使用します。
簡単な方法で簡単なチェックを行うことができますgrep
(コードが難読化されていない場合)
grep -ilrE "curl|file_get_contents|fopen|Zend_Http_Client" app/code/local app/code/community
そして、@ Mariusが以下で言ったように、base64
暗号化された文字列でメソッドを隠す可能性がある、難読化されたモジュールを探します
grep -ilrE "eval[\t ]+\(" app/code/local app/code/community
上記のCLIメソッドの唯一の問題は、アウトバウンドHTTPリクエストに対して非常に効果的であり、HTTPSには役に立たない(トラフィックが暗号化されている場合)、得られる最善の方法はIP /ホスト名ですが、それ以上のものはありません。
eval
、これらのeval
関数で何が発生するかを調べて確認することもできます。自宅に電話をかけるほとんどの内線eval
番号は、電話番号を簡単に見つけることができないためです。
eval
あまりにS」
答えが難しいもの-サードパーティの拡張機能がリモートサーバーにリクエストを送信している場合、これはリクエストの作成方法に応じてさまざまな方法で発生する可能性があります。そのようなインスタンスを見つけるための最良のオプション(潜在的に時間がかかる可能性があります)は、実際に拡張コードを調査することです。残念ながら、このようなことを識別するための包括的なメソッドはありません。
インストールした拡張機能やそれらがどのように構築されたかがわからないので、拡張機能が適切に開発されていれば、そのような通信はフロントエンドのパフォーマンスに影響を及ぼさないような方法で行われているはずです。