35

これは私が長い間抱えていた問題です。WindowsコンピューターでPHPアプリケーションを実行したいのですが、ロード時間が非常に長く、約10〜25秒です。私は多くのことを試みました:

  • まず、簡単なXAMPPのインストールを試しました
  • WAMPの方が速いかもしれないと読んだので、WAMPも試してみました。それは私に同じ結果を与えました
  • 次に、PHPを使用してnginxサーバーをインストールしましたが、どちらも役に立ちませんでした
  • 最後に、VirtualBoxにUbuntu 11.10をインストールし、プロジェクトを含むWindowsファイルを共有しましたが、結果はさらに悪化しました。毎回22秒以上の読み込み時間です。

更新:私はAPCを試しました-それは少し改善されましたが、それでも6-8秒/ページ

私は自分のファイルをLinuxサーバー(共有ホスティング)にアップロードしました。Linuxサーバーでは約300〜500ミリ秒で実行されます。XAMPPのインストールでは、他の(つまり、Symfony2ではない)アプリケーション(phpmyadminなど)も実行しようとしました。これらのアプリケーションも、共有ホスティングよりも低速でしたが、2〜3秒の読み込み時間で極端に低速ではありませんでした。メインOSとしてLinuxに変更するまで、どうすればパフォーマンスを向上させることができますか?私はi7CPU、4 GB RAM、5400RPM HDD、Win7x64を搭載したラップトップを持っています。

ご協力ありがとうございました!

UPDATE2:いくつかの不思議な理由で、私のSymfonyルーティングがfcgidで機能しなかったので(すべてに対して404エラーが発生しました)、PHPをモジュールとして使用するために戻りました。今では、これまでで最悪になっています(モジュールとして使用されていたよりも悪い):アプリモードは20〜25秒、開発モードでは毎回30秒を超えるため、タイムアウトエラーが発生します。これは、またはAPCが有効になっていない。

ここで、このエラーを確認できます。これは再現可能です。30秒以内に異なる実行ポイントに到達するたびに:

ここに画像の説明を入力してください

4

10 に答える 10

25

アップデート:

PHP5.5にPHPOPCacheが統合されたため、実行時間が短縮されます。私のセットアップでは、データベースアクセスを伴う完全なリクエストには180ミリ秒かかります。

手順:

  1. 最新のphpバージョンに更新する
  2. OPCacheを有効にする
  3. xdebugを無効にする
  4. DemonTPxが述べたように、realpath_cache_size=2Mを設定します

php.ini設定:

realpath_cache_size = 2M
[XDebug]
xdebug.profiler_enable = 0
xdebug.remote_enable = 0
[opcache]
zend_extension = "C:\xampp18\php\ext\php_opcache.dll"
opcache.enable = 1
opcache.enable_cli = 0
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 4000

WindowsがUnixより遅いのはなぜですか?

ここで説明するように、PHPはfile_existsでは非常に遅く、Windowsではfilemtime()が遅くなります。Symfony2はこれらの関数を開発モードで頻繁に使用しているためです。Windowsでは700ms(<= 5.4)を下回ることはありません。PHP5.5では180ミリ秒が可能になりました。

解決策は、IISでこの問題を解決するためにMicrosoftによって開発されたWinCacheである可能性があります。しかし、それはいくつかのWindowsバージョンでのみ機能し、IISでものみ機能するため、私にとっては解決策ではありません。

また、私がお勧めできる優れたソリューションは、Virtualbox上にLinux仮想マシンを配置することです。これはセットアップが簡単で、実稼働環境に似ています。

于 2013-06-10T10:00:04.047 に答える
20

私はまったく同じ問題を抱えています。php.iniで次のように設定すると、パフォーマンスが約800ミリ秒から約300ミリ秒に向上しました。

php.ini:

realpath_cache_size = 2M

それでも、UNIXマシンから得られる約100ミリ秒ではありませんが、少なくとも違いはあります

于 2013-07-23T17:55:49.387 に答える
9

XPとServer2003でしばらくの間symfony1で同様の問題が発生しました。解決策は、PHPアクセラレーター(最近はeAccelerator、APCの方が良いかもしれません)とFastCGI/fcgidをインストールすることでした。

補遺:WindowsでApacheを使用してから何年も経ちました。私は一般的に、そのパフォーマンスは悪化するのではなく、着実に向上していると考えてきました。ただし、ほとんどの通常とは異なる設定と同様に、良好な結果が保証されるわけではありません。私の以前のコメントによると、私は以前にいくつかの素晴らしい専門家のアドバイスを受けたApacheLoungeで質問することをお勧めします。

メモリが正しく機能する場合、ApacheWebサイトで提供されている標準のツールよりも優れたツールでコンパイルされた無料のApacheバイナリを提供できます。

于 2012-03-24T19:38:35.480 に答える
3

うわー、さまざまなことを試した後、私はついにWindows7の実行時間15秒から実行時間3秒にwampを使用して移動することに成功しました。

wincache拡張機能をインストールする方法:http: //us2.php.net/manual/en/wincache.installation.php

wincache dllをダウンロードする場所: http ://sourceforge.net/projects/wincache/

私のphp.ini構成の変更:

[PHP]
realpath_cache_size = 2M
extension=php_wincache.dll
; XDEBUG Extension
;zend_extension = "C:/Net Generation/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11.dll"
;
[xdebug]
xdebug.remote_enable = off
xdebug.profiler_enable = Off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "C:/Net Generation/wamp/tmp"
xdebug.show_local_vars=0
xdebug.max_nesting_level=200

[opcache]
zend_extension = "C:/Net Generation/wamp/bin/php/php5.5.12/ext/php_opcache.dll"
opcache.enable = 1
opcache.enable_cli = 0
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 4000
于 2015-01-27T14:20:16.037 に答える
1

数年前、私は同じ問題を抱えていました。どのウイルス対策ソフトウェアをバックグラウンドで実行していますか?開発目的で非アクティブ化するか、変更してみてください。また、バックグラウンドで実行されている一部のインデックスサービスである可能性もあります。Symfony 2は、ベンダーの15000を超えるファイルで構成されています:)また、Windowsを最初から再インストールすることにより、従来の方法で実行してみてください。私のサイトは通常100〜500ミリ秒かかり、私のラップトップはあなたのラップトップよりも低速です。(Intel C2D P8600)

于 2012-04-09T15:06:53.553 に答える
1

キャッシュメカニズムに問題があると思います。app\cacheディレクトリを確認してください。devという名前のフォルダーが必要です。存在しない場合、または空の場合は、フォルダのアクセス許可を確認してください。app \ cacheディレクトリの下のdevおよびprodディレクトリを削除すると、ページの読み込みに18秒かかりますが、その後は500ミリ秒しかかかりません。

于 2012-04-03T00:01:50.127 に答える
1

単なる推測ですが(おそらく正しいものではありません)、MySQLに関連している可能性があります。テストしたPHPアプリケーションとしてPhpMyAdminとSymfony2をどのように言及したかを見ると、どちらもMySQLに依存しています(MySQLがSymfony 2にセットアップされていると仮定します)。投稿ではこれについて言及していませんが、VirtualBoxのセットアップで、Ubuntuで実行されているスクリプトをWindowsホストマシンのMySQLサーバーに接続させましたか?

PHPベンチマークでパフォーマンステストスクリプトを確認し、これらのスクリプトのパフォーマンスが時間的に向上するかどうかを確認できます。

もう1つ試すことができるのは、Xdebugを使用して、(a)時間がかかりすぎる特定の(グループの)関数が見つかるかどうかを確認することです。

私は間違いなくこの質問をお気に入りとして保持するつもりです。なぜなら、私はそれが今何であったかを知りたくてたまらないからです:)頑張ってください!

于 2012-07-27T14:29:02.123 に答える
0

http://oca.microsoft.com/en/windiag.aspを使用してコンピュータのランダムアクセスメモリ、RAMを確認するか、UbuntuCD起動オプションに付属のメモリテストアプリケーションを実行します。

どちらの場合も、エクストラテストまたはディープテストとして知られているものを選択してください-正確には覚えていません-しかし、この種のテストには終わりがなく、テストが2つのフェーズを終了し、問題が発生するまで待つだけです。一般的に、RAMが表示されます。

また、チェックの手段でハードドライブをチェックしてください。その後、ディスクの最適化を実行してみてください

私は少し、あなたの問題はハードウェア関連の問題です。

于 2012-07-28T11:32:02.520 に答える
0

私のページの実行には20秒かかりました。高速cgiをインストールし、メモリ制限を増やしましたが、すべてが機能しませんでした。それからタイムラインを見始め、symfonyファイアウォールモジュールがそのほとんどの時間を占めていることに気づきました。doctrineの設定に「localhost」が含まれていることが問題の原因であることが判明しました。127.0.0.1に変更すると、問題が修正されました。理由はわかりませんが、ここで説明します。

http://12wiki.blogspot.ca/2012/11/why-does-symfony-2-firewall-take-so.html

于 2015-05-17T00:25:14.580 に答える
-1

ページの読み込み時間は、CSS +JS+画像の読み込み時間にも依存します。CakePHPでも同じ問題が発生しmod_expires、htaccessで使用して問題を解決しました。

CSS、JS、画像のサーバーhtaccessファイルで「ExpiresByType」を試しましたか?このページを確認してください。

于 2012-07-24T05:04:27.160 に答える