PHP における巨大なデータ オブジェクトのメモリ オーバーヘッドに関する問題の研究
PHP における巨大なデータ オブジェクトのメモリ オーバーヘッドに関する研究
まず誤解しないでいただきたいのですが、私はこの問題に関する研究結果を公開していませんが、この問題の分析と研究に協力していただきたいと思っています。 :)
問題の背景を簡略化して説明します。PHP で実装された Web サイトでは、すべてのプログラム ファイルの先頭に共通ファイル common.php が含まれます。現在、ビジネス上のニーズにより、 $huge_array = array(1,2,3,...,500000) のように、「巨大な」データ オブジェクト (約 500k の int 値を含む配列オブジェクト) が common.php で定義されています。システム全体で $huge_array への「読み取り」アクセスのみが存在します。システムは 100 の同時リクエストで安定して実行し続ける必要があると仮定します。
質問 1: $huge_array は common.php ソース ファイルで約 10M を占有し (当面は問題ありません)、メモリにロードされると 4M を占有する可能性があります (単なる推定です。サイズを正確に測定することは、この記事で議論する点ではありません)。問題は、PHP 自体が HTTP リクエストを処理するたびに独立したプロセス (またはスレッド) を開始するため、この約 4M のメモリ ブロックをメモリに再ロードする必要があるということです。メモリを共有できない場合、同時に 400M 近くの物理メモリを占有する可能性があり、メモリ使用量とメモリ アクセス効率の点で非常に不利になります。
質問 2: 特定のキャッシュ メカニズム (APC、XCache など) が有効になっている場合、そのようなキャッシュ メカニズムにはオペコードをキャッシュする機能があることがわかっていますが、スクリプトのコンパイル プロセスが短縮されるだけのようです。反復的な作業の場合、共有メモリは実行時の変数の読み込みにも役割を果たすことができますか?結局のところ、これらの多くの int 値はオペコードの一部としても存在する必要があるため、それが特定の役割を果たすことを願っています。
質問 3: 上記の XCache によるオペコードのキャッシュが目的を達成できない場合、XCache を直接操作しても効果はありますか?つまり、$huge_array は common.php に記述されるのではなく、キャッシュ エンジンに記述されます。
この記事の目的は、分析と調査を通じて、この使用法がメモリ使用量のボトルネックを引き起こすかどうか、および問題がある場合はそれを最適化する方法を判断することです。もちろん、巨大なデータ オブジェクト自体のサイズを削減するためにあらゆる手段を試すことが最初に考慮すべき最も重要なことですが、データ構造とアルゴリズムについてはこの記事では説明しません。コードを書く時間がない場合は、ソリューションが合理的である限り、この問題に関する独自の分析や見解を表明することができます。 , テストコードを書いてみたいと思います^_^
。
―――――――――――――――――――――――――――――――――
CSDN フォーラムが提供するプラグイン拡張機能をベースに、署名ファイル ツールを作成し、皆さんと共有しました。技術的な交流は歓迎です :)

ホット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)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
