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

PHPは共有メモリプロセス通信機能のshmを実装

藏色散人
藏色散人転載
2019-09-29 14:21:163325ブラウズ

以前、共有メモリを実装するための 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、混合変数);

戻り値: 整数

関数の種類: オペレーティング システムおよび環境

内容の説明: この関数は、メモリ空間内の変数値を増加または変更するために使用できます。パラメータ 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);

戻り値: 整数

関数の種類: オペレーティング システムおよび環境

コンテンツの説明:この関数は、メモリ空間内の指定された変数値を削除するために使用できます。パラメータ shm_identifier は、削除する共有メモリ ID 値です。パラメータ variable_key は、削除する変数名のキーです。

PHP の詳細については、

PHP 中国語 Web サイト をご覧ください。

以上がPHPは共有メモリプロセス通信機能のshmを実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。