1.memory_get_usage 関数
int memory_get_usage ([ bool $real_usage = false ] )
PHP スクリプトによって使用されるメモリ (memory_get_usage() 関数自体によって占有されるメモリを除く)
memory_get_usage() パラメータ $ real_usage、デフォルトは FALSE です。TRUE に設定すると、取得されるメモリ値は PHP メモリ管理によって占有されるメモリになります。
//php分配到的内存 var_dump(memory_get_usage(true)); //php使用内内存 var_dump(memory_get_usage());
Result
int 262144
int 239368
PHPのメモリ管理メカニズムは、変数を保存するためのスペースを事前に割り当て、スペースが十分でない場合は、新しいスペースを申請します。
memory_get_usage(true) は、事前に割り当てられたメモリです。
これまで PHP ページのメモリ使用量に注意を払ったことはありませんでした。今後ページを最適化するときにも、この関数を使用してコードを分析する必要があります。
2. 変数の割り当てとメモリ
var_dump(memory_get_usage()); $a = "Hello World"; var_dump(memory_get_usage()); $b = $a; var_dump(memory_get_usage()); unset($b); var_dump(memory_get_usage()); unset($a); var_dump(memory_get_usage());
Result
int 239776
int 239912
int 240000
int 239912
int 239776
239912-239776=136
240000-239912=88
$a と $b の割り当てで使用されるメモリが異なります。これは、$b の割り当てでは、出力関数がメモリを割り当てないためです。
さらに、$b を破棄しても、$a が使用するメモリには影響しません。これが、メモリ管理の参照カウントの理由です。
例を変更すると、変数の割り当てとメモリの関係が明確に理解できます
var_dump(memory_get_usage()); $a = "Hello World"; var_dump(memory_get_usage()); $b = "Hello World"; var_dump(memory_get_usage()); unset($b); var_dump(memory_get_usage()); unset($a); var_dump(memory_get_usage());
結果
。int 239816
int 239952
int 240088
int 239952
int 239816
239952-239816=136
240088-239952=136
追加の参照割り当て メモリ占有ルールは直接割り当てに似ています。メモリ管理の参照が含まれます
string
'Hello World' (length=11)refcountは値を指す変数の数ですis_refはアドレス参照があるかどうかを表します
参照カウントの基礎知識
php 変数
は、変数コンテナーに「zval」というファイルが存在します。 zval 変数コンテナには、変数の型と値に加えて、2 バイトの追加情報が含まれています。 1 つ目は「is_ref」です。これは、この変数が参照セットに属しているかどうかを識別するために使用されるブール値です。このバイトを通じて、PHP エンジンは通常の変数と参照変数を区別できます。PHP ではユーザーが & を使用してカスタム参照を使用できるため、zval 変数コンテナーにはメモリ使用量を最適化するための内部参照カウント メカニズムもあります。 2 番目の追加バイトは「refcount」で、この zval 変数コンテナーを指す変数 (シンボルとも呼ばれます) の数を示すために使用されます。すべてのシンボルはシンボル テーブルに存在し、各シンボルにはスコープ (スコープ) があり、メイン スクリプト (例: ブラウザを通じて要求されたスクリプト)、および各関数またはメソッドにもスコープがあります。以上がPHP 変数とメモリ管理に関する学習メモの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

phpssionsStrackuserdataacrossmultiplepagerequestsusingauniqueidstoredinacookie.here'showtomanageetheemefectively:1)Startassession withsession_start()andstoredatain $ _ session.2)RegeneratesseSsessidafterloginwithsession_id(the topreventes_id)

PHPでは、次の手順を通じてセッションデータを繰り返すことができます。1。session_start()を使用してセッションを開始します。 2。$ _Sessionアレイのすべてのキー価値ペアを介してforeachループを反復します。 3.複雑なデータ構造を処理する場合、is_array()またはis_object()関数を使用し、print_r()を使用して詳細情報を出力します。 4.トラバーサルを最適化する場合、ページングを使用して、一度に大量のデータの処理を避けることができます。これにより、実際のプロジェクトでPHPセッションデータをより効率的に管理および使用するのに役立ちます。

このセッションは、サーバー側の状態管理メカニズムを介してユーザー認証を実現します。 1)セッションの作成と一意のIDの生成、2)IDはCookieを介して渡されます。3)サーバーストアとIDを介してセッションデータにアクセスします。

tostoreauser'snameInappession、starthessession withsession_start()、thensignthenameto $ _session ['username']。1)ousession_start()toinitializethessession.2)assighttheuser'snameto $ _ session ['username']

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック









