ホームページ  >  記事  >  バックエンド開発  >  PHPは共有メモリプロセス通信機能(_shm)を実装

PHPは共有メモリプロセス通信機能(_shm)を実装

不言
不言オリジナル
2018-07-06 15:34:491600ブラウズ

この記事では、主に 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(&#39;Unable to create the shared memory segment&#39; . PHP_EOL);
}
//设置一个值
shm_put_var($shm_id, $shar_key, &#39;test&#39;);

//删除一个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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。