ヘルプ: php サーバーと mysql サーバー全体の効率を向上させるにはどうすればよいですか?
私が開発したアプリはサーバー側でLAMPを使用しており、phpとmysqlが同じサーバー上にある場合、アプリの応答速度は悪くありません。
しかし、将来的に php と mysql を別のサーバーに配置する必要があるかもしれないことを考慮して、この方法でテストしたところ、アプリの応答が非常に遅く、各応答に約 10 秒かかることがわかりました。
私自身の PHP 実装コードを分析したところ、アプリのリクエストでは PHP と MySQL が何百回もやり取りしていることがわかりました。毎回のやり取りにはそれほど時間がかかりませんが、数百回も積み重なると膨大な量になります。実際、データベース自体のクエリにはそれほど時間はかかりません。おそらく、PHP と msysql のクロスサーバー ネットワークの遅延に費やされます。
クロスサーバー状況で効率を向上させるにはどうすればよいですか?私が考えている方法は次の 2 つです。 1. PHP と MySQL の 2 つのサーバーのネットワーク伝送パフォーマンスを向上させる (現在、自宅で無線 LAN を使用しています。有線 LAN またはより優れたギガビット LAN の場合、遅延が非常に大きくなります) 2. PHP はビジネス ロジック自体を実装する必要はありませんが、mysql にリクエストを送信し、mysql はストアド プロシージャを使用してそれを実装します。ネットワーク伝送遅延の問題を解決する必要があります。
私には PHP の開発経験があまりないので、私の解決策が機能するかどうか、または他の解決策があるかどうかを確認したいと思っています。
ありがとうございます!
ディスカッションへの返信 (解決策)
1. 長い接続を使用してデータベースに接続します
2. クエリ結果をローカルで一度に読み取ります (mysqli_result::store_result、pdo::fetchall)
ありがとうモデレーターさん、返信ありがとうございます!
これら 2 つの方法を使用すると、パフォーマンスが一部向上する可能性があります。
ただし、一部の場所では処理が困難です。たとえば、A、B、C は 3 つのクエリであり、最初に A を実行し、その結果に従って B を実行する必要があります。C のみを実行することもできます。 B を実行した後。シーケンス要件があり、クエリ結果を一度に取得する方法はありません。
次に、ビジネス ロジックに多くの変更を加えない限り、一部のクエリではクエリ結果をローカルに一度に送信するのは不便です。
午後、テストのために2台のマシンを有線LANに置いたところ、無線LANの場合はping値が20ms程度、有線の場合は大幅に速度が速くなりました。は 1ms 未満なので、100 回以上の呼び出しで十分です。わずか 70ms 程度なので、この遅延は大きな問題ではありません。
1 つのアプリリクエストで、php と mysql の間で何百ものやり取りが行われます。
1 つのリクエストで何百ものインタラクション? 。 。
本来、データベースと PHP が分離されている場合、一定のネットワーク遅延が発生します。
推奨事項:
1. キャッシュを有効にしてデータベースへのアクセスを減らします。
2. データベースの構造とインデックスを最適化します。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

Laravelのサービスコンテナとサービスプロバイダーは、そのアーキテクチャの基本です。 この記事では、サービスコンテナ、詳細サービスプロバイダーの作成、登録、および実用的な使用法を例で説明します。 Oveから始めます

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
