亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

php操作共享內存shmop類及簡單使用測試的代碼

2020-03-22 18:02:17
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于php操作共享內存shmop類及簡單使用測試的代碼,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

SimpleSHM 是一個較小的抽象層,用于使用 PHP 操作共享內存,支持以一種html' target='_blank'>面向對象的方式輕松操作內存段。在編寫使用共享內存進行存儲的小型應用程序時,這個庫可幫助創建非常簡潔的代碼。可以使用 3 個方法進行處理:讀、寫和刪除。從該類中簡單地實例化一個對象,可以控制打開的共享內存段。

類對象和測試代碼

 ?php//類對象namespace Simple/SHM;class Block * Holds the system id for the shared memory block * @var int * @access protected protected $id; * Holds the shared memory block id returned by shmop_open * @var int * @access protected protected $shmid; * Holds the default permission (octal) that will be used in created memory blocks * @var int * @access protected protected $perms = 0644; * Shared memory block instantiation * In the constructor we ll check if the block we re going to manipulate * already exists or needs to be created. If it exists, let s open it. * @access public * @param string $id (optional) ID of the shared memory block you want to manipulate public function __construct($id = null) if($id === null) { $this- id = $this- generateID(); } else { $this- id = $id; if($this- exists($this- id)) { $this- shmid = shmop_open($this- id, w , 0, 0); * Generates a random ID for a shared memory block * @access protected * @return int System V IPC key generated from pathname and a project identifier protected function generateID() $id = ftok(__FILE__, b  return $id; * Checks if a shared memory block with the provided id exists or not * In order to check for shared memory existance, we have to open it with * reading access. If it doesn t exist, warnings will be cast, therefore we * suppress those with the @ operator. * @access public * @param string $id ID of the shared memory block you want to check * @return boolean True if the block exists, false if it doesn t public function exists($id) $status = @shmop_open($id, a , 0, 0); return $status; * Writes on a shared memory block * First we check for the block existance, and if it doesn t, we ll create it. Now, if the * block already exists, we need to delete it and create it again with a new byte allocation that * matches the size of the data that we want to write there. We mark for deletion, close the semaphore * and create it again. * @access public * @param string $data The data that you wan t to write into the shared memory block public function write($data) $size = mb_strlen($data, UTF-8  if($this- exists($this- id)) { shmop_delete($this- shmid); shmop_close($this- shmid); $this- shmid = shmop_open($this- id, c , $this- perms, $size); shmop_write($this- shmid, $data, 0); } else { $this- shmid = shmop_open($this- id, c , $this- perms, $size); shmop_write($this- shmid, $data, 0); * Reads from a shared memory block * @access public * @return string The data read from the shared memory block public function read() $size = shmop_size($this- shmid); $data = shmop_read($this- shmid, 0, $size); return $data; * Mark a shared memory block for deletion * @access public public function delete() shmop_delete($this- shmid); * Gets the current shared memory block id * @access public public function getId() return $this-  * Gets the current shared memory block permissions * @access public public function getPermissions() return $this- perms; * Sets the default permission (octal) that will be used in created memory blocks * @access public * @param string $perms Permissions, in octal form public function setPermissions($perms) $this- perms = $perms; * Closes the shared memory block and stops manipulation * @access public public function __destruct() shmop_close($this- shmid);}
 ?php//測試使用代碼namespace Simple/SHM/Test;use Simple/SHM/Block;class BlockTest extends /PHPUnit_Framework_TestCase public function testIsCreatingNewBlock() $memory = new Block; $this- assertInstanceOf( Simple//SHM//Block , $memory); $memory- write( Sample  $data = $memory- read(); $this- assertEquals( Sample , $data); public function testIsCreatingNewBlockWithId() $memory = new Block(897); $this- assertInstanceOf( Simple//SHM//Block , $memory); $this- assertEquals(897, $memory- getId()); $memory- write( Sample 2  $data = $memory- read(); $this- assertEquals( Sample 2 , $data); public function testIsMarkingBlockForDeletion() $memory = new Block(897); $memory- delete(); $data = $memory- read(); $this- assertEquals( Sample 2 , $data); public function testIsPersistingNewBlockWithoutId() $memory = new Block; $this- assertInstanceOf( Simple//SHM//Block , $memory); $memory- write( Sample 3  unset($memory); $memory = new Block; $data = $memory- read(); $this- assertEquals( Sample 3 , $data);}

額外說明

 ?php$memory = new SimpleSHM;$memory- write( Sample echo $memory- read();? 

請注意,上面代碼里沒有為該類傳遞一個 ID。如果沒有傳遞 ID,它將隨機選擇一個編號并打開該編號的新內存段。我們可以以參數的形式傳遞一個編號,供構造函數打開現有的內存段,或者創建一個具有特定 ID 的內存段,如下

 ?php$new = new SimpleSHM(897);$new- write( Sample echo $new- read();? 

神奇的方法 __destructor 負責在該內存段上調用 shmop_close 來取消設置對象,以與該內存段分離。我們將這稱為 “SimpleSHM 101”?,F在讓我們將此方法用于更高級的用途:使用共享內存作為存儲。存儲數據集需要序列化,因為數組或對象無法存儲在內存中。盡管這里使用了 JSON 來序列化,但任何其他方法(比如 XML 或內置的 PHP 序列化功能)也已足夠。如下

 ?phprequire( SimpleSHM.class.php $results = array( user = John , password = 123456 , posts = array( My name is John , My name is not John )$data = json_encode($results);$memory = new SimpleSHM;$memory- write($data);$storedarray = json_decode($memory- read());print_r($storedarray);? 

我們成功地將一個數組序列化為一個 JSON 字符串,將它存儲在共享內存塊中,從中讀取數據,去序列化 JSON 字符串,并顯示存儲的數組。這看起來很簡單,但請想象一下這個代碼片段帶來的可能性。您可以使用它存儲 Web 服務請求、數據庫查詢或者甚至模板引擎緩存的結果。在內存中讀取和寫入將帶來比在磁盤中讀取和寫入更高的性能。

使用此存儲技術不僅對緩存有用,也對應用程序之間的數據交換也有用,只要數據以兩端都可讀的格式存儲。不要低估共享內存在 Web 應用程序中的力量??刹捎迷S多不同的方式來巧妙地實現這種存儲,惟一的限制是開發人員的創造力和技能。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

php實現共享內存進程通信函數(_shm)

以上就是php操作共享內存shmop類及簡單使用測試的代碼的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97色在线观看免费视频| 日韩精品视频在线| 国产精品入口日韩视频大尺度| 欧美国产极速在线| 久久夜色精品国产亚洲aⅴ| 欧美大片在线免费观看| 亚洲精品一区二区网址| 欧美成人精品xxx| 欧美激情第三页| 日韩欧美国产高清91| 中文综合在线观看| 亚洲午夜未满十八勿入免费观看全集| 一区二区三区无码高清视频| 日韩欧美一区二区三区久久| 国产精品中文久久久久久久| 91免费综合在线| 午夜精品一区二区三区视频免费看| 色yeye香蕉凹凸一区二区av| 欧洲成人免费aa| 亚洲精品理论电影| 久久精品国产96久久久香蕉| 国语自产精品视频在线看抢先版图片| 国产91精品在线播放| 亚洲欧美日韩高清| 大量国产精品视频| 日韩欧美在线网址| 5566日本婷婷色中文字幕97| 中文字幕亚洲一区二区三区五十路| 国内精品久久久久久久| 国产精品久久不能| 国产精品丝袜一区二区三区| 国产成人精品一区二区| 88xx成人精品| 精品国产鲁一鲁一区二区张丽| 黑人巨大精品欧美一区二区免费| 中文字幕v亚洲ⅴv天堂| 国色天香2019中文字幕在线观看| 国产欧美一区二区三区久久人妖| 欧美午夜视频一区二区| 一本色道久久综合亚洲精品小说| 国产精品美女呻吟| 欧美视频在线观看免费网址| 亚洲国产精品小视频| 久久久www成人免费精品张筱雨| 亚洲一区二区三| 欧美成人精品xxx| 成人免费在线网址| 久久视频免费观看| 欧美黑人性视频| 97视频免费在线看| 成人激情在线播放| 亚洲国产精久久久久久久| 亚洲欧美国产一区二区三区| 亚洲精品99999| 久久91亚洲人成电影网站| 亚洲国产精品久久久久秋霞蜜臀| 成人精品一区二区三区电影黑人| 中文字幕亚洲天堂| 色偷偷偷亚洲综合网另类| 成人精品一区二区三区电影免费| 欧美在线视频观看| 日韩免费中文字幕| 26uuu另类亚洲欧美日本一| 久久不射热爱视频精品| 中文字幕日韩电影| 久久成人亚洲精品| 欧美黄色成人网| 欧美精品久久久久a| 欧美精品成人在线| 国产精品久久一区主播| 久久天天躁狠狠躁夜夜爽蜜月| 一级做a爰片久久毛片美女图片| 久久久人成影片一区二区三区观看| 欧美日韩在线一区| 久青草国产97香蕉在线视频| 不卡在线观看电视剧完整版| 丝袜亚洲另类欧美重口| 日韩美女福利视频| 国外色69视频在线观看| 992tv成人免费视频| 日韩av片永久免费网站| 久久人人爽国产| 国产精品草莓在线免费观看| 国产成人精品视频在线| 亚洲va电影大全| 精品久久香蕉国产线看观看亚洲| 日韩大胆人体377p| 欧美日韩国产在线| 日韩av片永久免费网站| 亚洲成色999久久网站| 亚洲风情亚aⅴ在线发布| 欧美成人精品一区| 久久艹在线视频| 欧美伦理91i| 欧美在线免费观看| 操日韩av在线电影| 高清视频欧美一级| 国产啪精品视频网站| 日韩免费观看视频| 国产成人精品视频| 日韩电影在线观看免费| 欧美日本高清一区| 2019中文字幕在线免费观看| 国产精品96久久久久久| 日韩av免费看网站| 久久久精品久久久久| 欧美一区二区三区免费观看| 国内成人精品视频| 日产精品久久久一区二区福利| 亚洲美女性生活视频| 青草青草久热精品视频在线网站| 亚洲第一国产精品| 国产精品一区二区电影| 伊人av综合网| 国产精品久久一| 久久久久久国产精品美女| 国产精品一香蕉国产线看观看| xxxx欧美18另类的高清| x99av成人免费| 亚洲精品白浆高清久久久久久| 欧美成人午夜视频| 久久免费在线观看| 久久久久久久久久久人体| 亚洲成人aaa| 精品国产乱码久久久久久虫虫漫画| 91免费版网站入口| 45www国产精品网站| 欧美国产乱视频| 国产精品亚洲片夜色在线| 粗暴蹂躏中文一区二区三区| 最新日韩中文字幕| 成人国产精品一区| 俺去啦;欧美日韩| 国产在线精品自拍| 成人免费在线视频网址| 午夜精品一区二区三区在线视频| 日韩电影免费在线观看| 富二代精品短视频| 国产精品揄拍一区二区| 亚洲一品av免费观看| 亚洲欧美日韩精品久久亚洲区| 欧美成人sm免费视频| 欧美视频在线视频| 最近2019中文字幕mv免费看| 亚洲97在线观看| 精品露脸国产偷人在视频| 欧美成人精品一区二区三区| 欧美日韩在线视频一区二区| 2019中文字幕免费视频| 国产91成人在在线播放| www亚洲欧美| 91精品国产综合久久香蕉的用户体验| 91国产高清在线| 97视频免费在线观看| 久久99久久久久久久噜噜| 日韩精品电影网| 欧美性生交大片免费| 国产精品久久久久久久app| 日韩中文字幕视频| 亚洲网站视频福利| 久久久亚洲欧洲日产国码aⅴ| 欧美日韩国产一区在线| 国产日韩欧美成人| 亚洲精品视频播放|