2012-02-21 3 views
0

test.htmlという名前のファイルが含まれています遅い実行

hello 

それが応答に数ミリ秒かかります。

test.phpをという名前のファイルが含まれています

hello 

この1が応答する数秒かかります。それらは同じコードであり、実際のP​​HPコードを含んでいません。ファイルの拡張子は唯一の違いです!

私は両方http://localhost/test.htmlやPHP

経由でロードしていますが、私は逃したサーバーの設定のいずれかの一般的な混乱状態はありますか?私は標準のUbuntu 11.04、Apache2、PHP5の設定を使用しています。

あなたのお手伝いがありがとうございます...あなたに必要なその他の詳細をお知らせください。

+0

多くのPHPモジュールが有効になっていますか? –

+0

コンソールで 'time curl -L --head http:// localhost/test.html'を実行し、リダイレクトが発生しているかどうかを確認して時刻を報告します。 –

+0

test.html - > real:5ms、user 4ms、sys 0ms – HighlandGuy

答えて

1

あなたのPHPファイルに実際のPHPコードがない場合でも、その拡張子のためApacheによってPHPパーサーに送信されます。 これはおそらく数ミリ秒遅くなり、システムによってはさらに多くなる可能性があります。

他の人は、おそらくあまりにも多くの時間を費やしているモジュールがあると指摘しています。しかし、元の質問については私の答えが立っている。コードなしでは、あなたのPHPファイルはPHPによって解析されています。

+0

合意しましたが、私はそれが5秒に近づくと言います。わずか数ミリ秒であれば何の問題もありません。私は速いシステムが長くかかるとは思わない...面白いことが起こっているはずです。 – HighlandGuy

+0

それではおそらく他の人たちと同じようにモジュールの問題が指摘しています。しかし、あなたのスクリプトにコードがないという事実はそれを変えません。 – Iznogood

+0

OK、ありがとう!それは間違いなくPHPの拡張機能によって引き起こされます...疑いはありません! – HighlandGuy

0

PHPコードはありませんが、PHPとして解析されています。この問題は、Apacheの設定/インストールされたモジュールに存在する可能性があります。また、PHPで多数の(または問題のある)有効なモジュールがある場合もあります。あなたがしようで何が起こっているかのアイデアを取得したい場合は

+0

問題のあるモジュールをどのように追跡するのですか? – HighlandGuy

+0

は、ここに私のモジュールです:コアmod_log_configのmod_logio preforkのhttp_core mod_soはmod_alias mod_auth_basic mod_authn_fileでもmod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindexのmod_cgiのmod_deflateをのmod_dir mod_env mod_mimeによりmod_negotiation mod_php5 mod_reqtimeout mod_rewriteのmod_setenvifのmod_statusを – HighlandGuy

+0

OKが、私は/etc/php5/apache2/conf.dに行ってきましたmod_usertrackに、開始各ファイルのすべてのextension = blahコマンドをコメントアウトします。今はmysqlとmysqliを有効にしているだけで、速く走っています!貢献した皆様に感謝します...これが誰かを助けることを願っています。 PROBLEMモジュールは、アンチウイルスプログラムclamavのようです。 – HighlandGuy

1

sudo -i 
stop apache2 
. /etc/apache2/envvars 
apache2 -k start -X & 
strace -u www-data -tt -ff -o /tmp/strace $(ps -o "-p %p" h -u www-data) & 

man straceそれがないと作業が完了したときにapache2 -k stopstart apache2に忘れていないかを調べるために:)あなたを忘れないでくださいできるだけ早く出てくるようにすべての強力な根です。

.htaccessファイルを追加して、sudo apt-get install php-apcを実行して、Opcodeキャッシュの動作を確認してください。次の段階では、ソースをダウンロードし、これをシステムトレースで起こっていることと突き合わせます。楽しい。