私は数年間(SF2、SF3)プロジェクトにWindows 10でSymfonyを使用してきましたが、最近Symfony 4は新しいプロジェクトを構築しますが、パフォーマンスは壊滅的です。
この例のように、symfonyの初期化時間は5〜25秒かかります
これはコンソールでも同じです。たとえば、cache:clear
は1分間続く場合があります。
Symfony doc とフォーラムで同様の問題と問題を検索し、推奨される最適化をテストしました(opcache
の値をいくつか増やし、APCu
を有効にし、xdebug
、realpath_cache_size
にphp.ini
を追加し、Composer Class Map Functionality)を使用しますが、私の場合は何も変更しません。
APCuのphpinfoは次のとおりです。 およびOpcache:
PHP 7.1.9、Apache 2.4.27、MariaDB10.2.8を使用しています。
同じ問題やアイデアを持っている人はいますか?
*更新*
私はこの問題のさらに良い解決策を見つけました。つまり... vagrant 。私はあなたが何を考えているか知っています-「窓の放浪者?笑」。しかし、ここで変更点があります-現在は WindowsでのNFSフォルダー同期用のプラグイン です。私は2台のwin10PCでテストしましたが、これまでのところ良好です。私にとっては非常に安定しているようで、応答時間は40〜50ミリ秒と短くなっています。 )(もちろん、symfonyがキャッシュを再生成/ウォーミングしているときなどを除く)。 Composerインストール、IDE同期などすべてが正常に機能しています。
それに加えて、ubuntu bionic virtualboxVMでnginxとphp7.2-fpmで構成されるかなり標準的なセットアップがあります。特別なものや最適化されたものはありません。
あなたがあまり浮気をしていなければ、私はまだ私の古い答えを参考のために以下に残します。幸運と幸せなコーディング!
* //更新*
少なくとも私にとっては、symfonyは常にウィンドウのパフォーマンスの点で非常に貧弱でした。
Opcache/apc/xdebugの有効化/無効化、realpathの微調整など、少なくとも少しは改善される可能性がありますが、私の経験では本当には機能しません。 そして...デバッガなしで作業したいのは一体誰ですか?それは私の意見では解決策ではありません。
XAMPP/WAMPを完全に削除して(または現在のphpスタックをインストールした場合)、nginx + php-fpmをインストールすることをお勧めします。
手作業で行うことができます- たとえば -またはインストールすることで WinNMP 。
WinNMPは、XAMPP/WAMPと非常によく似たツールですが、nginxに基づいています。 Nginx、PHP、MySQL、Redisが付属しています。
唯一の欠点は、nginxの構成方法を学ぶ必要があることです(わからない場合)が、とにかくすべきです。 Nginxはパフォーマンスが高いため、ほとんどの場合、本番環境に適しているため、将来的に役立つ可能性があります。
とにかく、それは私がxdebugを無効にしたり、更新のたびに経過時間を待つ必要がないWindowsでsymfonyを使用することがわかった唯一の実行可能な解決策です:)
localhost
を使用してデータベース(または何か)に接続していますか? 127.0.0.1
に変更します
JMS DI Extraバンドルは、適切に構成されていない場合、Windowsでこれを実行できます。
他の人はxdebugとrealpath_cache_sizeに言及しました、それらもまた通常の犯人です。
リクエストごとに3〜5秒かかる初期化というSymfonyの問題があり、ローカル開発が非常に遅くなりました。私はそれを改善するためにすべてを試しました(php.ini設定の変更、phpのアップグレードなど)、最終的にxDebugで起動するSymfonyをウォークスルーし、開発キャッシュがすべてのページ要求ごとに再構築され、ファイルservices.yamlがトリガーされていることを発見しましたキャッシュの再構築。
Services.yamlファイルを見ると、時間の変更をテストしていて、コンピューターの時間を将来に移動し、その間にservices.yamlファイルを保存していたため、変更された時間は将来の方法であることがわかりました。現在の時刻にファイルを再保存すると、毎回キャッシュを再構築する必要がなくなりました。
WAMPの代わりに組み込みの開発サーバーを使用します。開発サーバーバンドルをインストールします。
composer require --dev symfony/web-server-bundle
サーバーの実行:
php bin/console server:run