web-dev-qa-db-ja.com

Symfony4はWindowsで非常に遅い

私は数年間(SF2、SF3)プロジェクトにWindows 10でSymfonyを使用してきましたが、最近Symfony 4は新しいプロジェクトを構築しますが、パフォーマンスは壊滅的です。

この例のように、symfonyの初期化時間は5〜25秒かかります example

これはコンソールでも同じです。たとえば、cache:clearは1分間続く場合があります。

Symfony doc とフォーラムで同様の問題と問題を検索し、推奨される最適化をテストしました(​​opcacheの値をいくつか増やし、APCuを有効にし、xdebugrealpath_cache_sizephp.iniを追加し、Composer Class Map Functionality)を使用しますが、私の場合は何も変更しません。

APCuのphpinfoは次のとおりです。 APCu およびOpcache: opcache

PHP 7.1.9、Apache 2.4.27、MariaDB10.2.8を使用しています。

同じ問題やアイデアを持っている人はいますか?

9
Ben

*更新*

私はこの問題のさらに良い解決策を見つけました。つまり... 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を使用することがわかった唯一の実行可能な解決策です:)

enter image description here

2
plunntic iam
  • localhostを使用してデータベース(または何か)に接続していますか? 127.0.0.1に変更します

  • JMS DI Extraバンドルは、適切に構成されていない場合、Windowsでこれを実行できます。

  • 他の人はxdebugとrealpath_cache_sizeに言及しました、それらもまた通常の犯人です。

0
Padam87

リクエストごとに3〜5秒かかる初期化というSymfonyの問題があり、ローカル開発が非常に遅くなりました。私はそれを改善するためにすべてを試しました(php.ini設定の変更、phpのアップグレードなど)、最終的にxDebugで起動するSymfonyをウォークスルーし、開発キャッシュがすべてのページ要求ごとに再構築され、ファイルservices.yamlがトリガーされていることを発見しましたキャッシュの再構築。

Services.yamlファイルを見ると、時間の変更をテストしていて、コンピューターの時間を将来に移動し、その間にservices.yamlファイルを保存していたため、変更された時間は将来の方法であることがわかりました。現在の時刻にファイルを再保存すると、毎回キャッシュを再構築する必要がなくなりました。

0
MEmerson

WAMPの代わりに組み込みの開発サーバーを使用します。開発サーバーバンドルをインストールします。

composer require --dev symfony/web-server-bundle

サーバーの実行:

php bin/console server:run

0
Rmy5