この記事では、主に PHP における共有メモリ プロセス通信関数 (_shm) の実装について紹介します。これには、一定の参考値があります。今、共有します。必要な友人は、それを参照してください。
PHP実装は以前に紹介されましたが、共有メモリの機能である Shmop もプロジェクトに適用されていますが、Shmop には制限があり、文字列型のみをサポートしています。テストしたところ、sem はハイブリッド型で、配列型をサポートし、直接保存したり、直接取得したりすることができ、フォーマット変換のための冗長な手順が削除されました。ただし、sem にはサイズ制限があり、shmop は非常に大きなサイズに設定できます~~~ ただし、php.ini で関連する設定を変更することもできます。
<?php $key = 0x4337b124; $shar_key = 1; // 创建一个共享内存 $shm_id = shm_attach($key, 1024, 0666); // resource type if ($shm_id === false) { die('Unable to create the shared memory segment' . PHP_EOL); } //设置一个值 shm_put_var($shm_id, $shar_key, 'test'); //删除一个key shm_remove_var($shm_id, $shar_key); //获取一个值 $value = shm_get_var($shm_id, $shar_key); var_dump($value); //检测一个key是否存在 var_dump(shm_has_var($shm_id, $shar_key)); //从系统中移除 shm_remove($shm_id); //关闭和共享内存的连接 shm_detach($shm_id);
注: $shar_key には int 型パラメータのみを指定できます。
詳細説明
shm_attach
共有メモリ空間を開きます。
構文: int shm_attach(int key, int [memsize], int [perm]);
戻り値: integer
関数の種類: オペレーティング システムおよび環境
内容の説明: この関数は次の目的で使用されます。開く、または共有メモリ空間を作成します。パラメータキーはこの部分のキーです。 memsizeパラメータは省略可能で、最低限必要なメモリ容量(単位はバイトグループ)を表します。デフォルト値はphp3.iniまたはphp.ini内のsysvshm.init_memで設定されます。設定がない場合は10000バイトです。このメモリ空間の使用権を決定するためにパラメータ perm を省略することもできます。デフォルト値は 666 です。戻り値はプログラムが使用できる共有メモリのID値です。
shm_detach
共有メモリ空間リンクを中止します。
構文: int shm_detach(int shm_identifier);
戻り値: integer
関数の種類: オペレーティング システムおよび環境
内容の説明: この関数は、共有メモリ空間とのリンクを終了するために使用されます。パラメータ shm_identifier は、停止する部分の共有メモリ ID 値です。
shm_remove
メモリ空間をクリアします。
構文: int shm_remove(int shm_identifier);
戻り値: integer
関数の種類: オペレーティング システムおよび環境
内容の説明: この関数は、共有メモリ空間内のすべてのデータをクリアするために使用されます。パラメータ shm_identifier は、停止する部分の共有メモリ ID 値です。
shm_put_var
メモリ空間内の変数を追加または更新します。
構文: int shm_put_var(int shm_identifier, int variable_key,mixed variable);
戻り値: integer
関数の種類: オペレーティング システムおよび環境
内容の説明: この関数は、増加または変更するために使用できます。メモリ空間変数の値。パラメータ shm_identifier は、追加および変更する共有メモリ ID 値です。パラメータ variable_key は、追加および変更する変数名のキーです。パラメーター変数は変数の内容であり、変数の型は double、整数、文字列、または配列です。
shm_get_var
メモリ空間で指定された変数を取得します。
構文:mixed shm_get_var(int shm_identifier, int variable_key);
戻り値:混合型データ
関数の種類:オペレーティング システムおよび環境
内容の説明:この関数は、指定された値を取得するために使用できます。メモリ空間変数に。パラメータ shm_identifier は、取得する共有メモリ ID の値です。パラメータvariable_keyは、取得する変数名のキーです。戻り値は、指定された変数キーの値です。
shm_remove_var
指定された変数をメモリ空間から削除します。
構文: int shm_remove_var(int id, int variable_key);
戻り値: integer
関数の種類: オペレーティング システムおよび環境
内容の説明: この関数は、指定された変数値を削除するために使用できます。メモリ空間。パラメータ shm_identifier は、削除する共有メモリ ID 値です。パラメータ variable_key は、削除する変数名のキーです。
上記がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
PHP コード自動検出 (git/svn 統合 PHP_CodeSniffer)
php 拡張機能 Redis のコンパイルとインストールそしてスウールメソッド
以上がPHPは共有メモリプロセス通信機能(_shm)を実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。