婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP共享內存使用與信號控制實例分析

PHP共享內存使用與信號控制實例分析

熱門標簽:長沙做地圖標注公司 四川保險智能外呼系統供應商 遼寧ai電銷機器人價格 電話機器人銷售主要負責什么 福建銀行智能外呼系統價格 上海做外呼線路的通信公司 地圖標注專員怎么樣 寧波外呼營銷系統 房產中介用的是什么外呼系統

本文實例講述了PHP共享內存使用與信號控制。分享給大家供大家參考,具體如下:

共享內存

共享內存的使用主要是為了能夠在同一臺機器不同的進程中共享一些數據,比如在多個 php-fpm 進程中共享當前進程的使用情況。這種通信也稱為進程間通信(Inter-Process Communication),簡稱 IPC。

PHP 內置的 shmop 擴展 (Shared Memory Operations) 提供了一系列共享內存操作的函數(可能是用的人不多吧,這一塊兒的文檔還沒有中文翻譯)。在 Linux 上,這些函數直接是通過調用 shm* 系列的函數實現,而 Winodows 上也通過對系統函數的封裝實現了同樣的調用。

主要函數:

shmop_close — 關閉共享內存塊

shmop_delete — 刪除共享內存塊

shmop_open — 創(chuàng)建或打開共享內存塊

shmop_read — 從共享內存塊中讀取數據

shmop_size — 獲取共享內存塊的大小

shmop_write — 向共享內存塊中寫入數據

與此相關的還有一個很重要的函數:ftok,通過文件的 inode 信息(*nix 上通過 stat 或 ls -i 命令查看)創(chuàng)建 IPC 的唯一 key(文件/文件夾的 inode 是唯一的)。這個函數在 Linux 上也是直接調用同名的系統函數實現,Windows 上還是使用一些封裝。

一個簡單的計數例子:

?php
# 創(chuàng)建一塊共享內存
$shm_key = ftok(__FILE__, 't');
$shm_id = shmop_open($shm_key, 'c', 0644, 8);
# 讀取并寫入數據
$count = (int) shmop_read($shm_id, 0, 8) + 1;
shmop_write($shm_id, str_pad($count, 8, '0', STR_PAD_LEFT), 0);
// echo shmop_read($shm_id, 0, 8);
# 關閉內存塊,并不會刪除共享內存,只是清除 PHP 的資源
shmop_close($shm_id);

以上這段代碼沒執(zhí)行一次計數加 1,而且數據是在不同進程之間共享的。也就是說除非手動刪除這塊內存使用,否則這個數據是不會重置的。

有個需要稍微注意的點:shmop_open 的第二個參數是個 flag,類似 fopen 的第二個參數,其取值有以前幾個:

"a" 只讀訪問;

"c" 如果內存片段不存在,則創(chuàng)建,如果存在,則可讀寫;

"w" 讀寫;

"n" 創(chuàng)建新的內存片段,如果同樣 key 的已存在,則會創(chuàng)建失敗,這是為了安全使用共享內存考慮。

此外,由于使用的共享內存片段是固定長度的,在存儲和讀取的時候要計算好數據的長度,不然可能會寫入失敗或者讀取空值。

信號控制

既然上面使用到了共享內存存儲數據,就需要考慮是否有多個進程同時寫入數據到共享內存的情況,是否需要避免沖突。如果是這樣,就需要引入信號量進行控制。

PHP 也提供了類似的內置擴展 sysvsem(這個擴展在 Windows 環(huán)境下沒有,文檔中將 ftok 函數也歸到這個擴展中,但實際上ftok 是在標準函數庫中提供的,所以在 Windows 下也是可用的)。

在說信號量控制之前,先說另外一件有意思的事情:看官方文檔你會發(fā)現這里同樣也有共享內存操作的函數(shm_*),因為這其實是同一類別(或者說來自于同一作者)的三個擴展,還有一個是 sysvmsg(隊列消息) 。函數的實現上稍有差別,但實際做的事情基本相同。這和上文的 shmop 擴展有什么區(qū)別呢?shmop 源碼下的 README 文件有簡單的說明:

PHP already had a shared memory extension (sysvshm) written by Christian Cartus cartus@atrior.de>, unfortunately this extension was designed with PHP only in mind and offers high level features which are extremely bothersome for basic SHM we had in mind.

簡單說來:sysvshm 擴展提供的方法并不是原封不動的存儲用戶的數據,而是先使用 PHP 的變量序列化函數對參數進行序列化然后再進行存儲。這就導致通過這些方法存儲的數據無法和非 PHP 進程共享。不過這樣也能存儲更豐富的 PHP 數據類型,上文的擴展中 shmop_write 只能寫入字符串。那么為什么 sysvshm 同樣不支持 Windows 呢?因為其并沒有引入封裝了 shm* 系列函數的tsrm_win32.h 的頭文件。

引入信號控制之后的示例:

?php
$id_key = ftok(__FILE__, 't');
$sem_id = sem_get($id_key);
# 請求信號控制權
if (sem_acquire($sem_id)) {
  $shm_id = shmop_open($id_key, 'c', 0644, 8);
  # 讀取并寫入數據
  $count = (int) shmop_read($shm_id, 0, 8) + 1;
  shmop_write($shm_id, str_pad($count, 8, '0', STR_PAD_LEFT), 0);
  // echo shmop_read($shm_id, 0, 8);
  # 關閉內存塊
  shmop_close($shm_id);
  # 釋放信號
  sem_release($sem_id);
}

但是本地想模擬實現寫入沖突實際上是非常難的(考慮到計算機的執(zhí)行速度)。在本地測試中,使用 for 循環(huán)操作時如果不使用shmop_close 關閉資源會出現無法打開共享內存的錯誤警告。這應該是因為正在共享內存被上一次操作占用中還沒有釋放導致。

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP基本語法入門教程》、《PHP錯誤與異常處理方法總結》、《php程序設計算法總結》及《php面向對象程序設計入門教程》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP進程通信基礎之信號量與共享內存通信
  • PHP共享內存用法實例分析
  • 單臺服務器的PHP進程之間實現共享內存的方法
  • php共享內存段示例分享
  • php使用shmop函數創(chuàng)建共享內存減少負載的方法

標簽:工商登記 深圳 澳門 常德 佛山 延安 宿遷 宜春

巨人網絡通訊聲明:本文標題《PHP共享內存使用與信號控制實例分析》,本文關鍵詞  PHP,共享,內存,使用,與,信號,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP共享內存使用與信號控制實例分析》相關的同類信息!
  • 本頁收集關于PHP共享內存使用與信號控制實例分析的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲欧洲日韩综合一区二区| 亚洲成人你懂的| 中文在线一区二区| 欧美色手机在线观看| 日本亚洲一区二区| 欧美激情资源网| 日本一道高清亚洲日美韩| 久久国产精品一区二区| 亚洲精品中文字幕在线观看| 欧美一二三区精品| 欧美性受xxxx| 99国产精品99久久久久久| 久久超碰97中文字幕| 国产成人在线色| 经典三级视频一区| 日韩福利电影在线| 韩国成人福利片在线播放| 蜜桃av一区二区三区电影| 亚洲理论在线观看| 日韩精品三区四区| 日本亚洲天堂网| 国产精品小仙女| 国产乱码精品一区二区三| 99久久精品国产一区| 欧美电影在哪看比较好| 88在线观看91蜜桃国自产| 欧美专区亚洲专区| 91老师片黄在线观看| 国产精品一区二区在线观看网站| 色综合天天综合色综合av| 91天堂素人约啪| 日韩午夜激情av| 一区二区视频在线看| 国产人妖乱国产精品人妖| 久久综合久久99| 久久亚洲一级片| 亚洲高清视频中文字幕| 久久久久久久久99精品| 日韩欧美精品在线视频| 在线观看视频91| 99久久99久久久精品齐齐| 亚洲成a人片在线观看中文| 综合久久给合久久狠狠狠97色 | 在线这里只有精品| 日韩黄色在线观看| 国产福利精品一区| 日本韩国视频一区二区| 欧美精品一区二区三区久久久| 高清成人免费视频| 国产精品一区二区在线观看不卡 | 国产亚洲一二三区| 欧美色男人天堂| 国产精品少妇自拍| 一区二区三区蜜桃网| 韩国女主播成人在线| 日韩一区二区三区视频| 天涯成人国产亚洲精品一区av| 青青草91视频| 国产精品77777| 日韩精品最新网址| 青青青伊人色综合久久| 日韩欧美一级精品久久| 青草国产精品久久久久久| 欧美一级国产精品| 另类调教123区| 亚洲欧美视频在线观看| 国产精品资源在线| 国产精品入口麻豆九色| 欧美性videosxxxxx| 亚洲丶国产丶欧美一区二区三区| 精品视频全国免费看| 国精产品一区一区三区mba桃花 | 国产电影一区在线| 亚洲一区在线观看网站| 成人蜜臀av电影| 久久精品人人做| 91在线一区二区| 蜜桃av一区二区在线观看| 综合激情成人伊人| 91精品国产aⅴ一区二区| 一区二区三区四区在线播放| 欧美日韩你懂的| 日本aⅴ精品一区二区三区 | 亚洲另类春色校园小说| 久久精品欧美日韩精品| 91麻豆精品国产91久久久久| 成人伦理片在线| 精品亚洲成av人在线观看| 亚洲国产精品影院| 伊人开心综合网| 亚洲天堂成人网| 欧美国产一区二区| 中文字幕欧美日本乱码一线二线| 亚洲国产成人在线| 日韩av电影天堂| 亚洲男人的天堂在线观看| 国产亚洲自拍一区| 亚洲精品一卡二卡| 一级女性全黄久久生活片免费| 日韩码欧中文字| 综合自拍亚洲综合图不卡区| 欧美经典一区二区| 国产精品精品国产色婷婷| 国产精品一二一区| 国产乱色国产精品免费视频| 久久精品久久99精品久久| 麻豆精品新av中文字幕| 国产91精品一区二区麻豆亚洲| 国产不卡一区视频| 欧美视频一区在线观看| 精品国产乱码久久| 一个色综合av| 粉嫩av亚洲一区二区图片| 欧美在线观看一区二区| 欧美日韩大陆一区二区| 91麻豆免费看片| 日韩欧美激情四射| 亚洲欧美福利一区二区| 国产在线日韩欧美| 欧美老女人第四色| 亚洲乱码国产乱码精品精98午夜| 免费一级欧美片在线观看| 99精品国产一区二区三区不卡| 日韩一区二区电影网| 亚洲图片欧美视频| 色丁香久综合在线久综合在线观看| 在线观看日韩高清av| 国产精品激情偷乱一区二区∴| 亚洲国产精品嫩草影院| 91社区在线播放| 国产精品久久久久久久久晋中| 日本在线不卡视频| 高清视频一区二区| 中文字幕av一区 二区| 国产精品夜夜嗨| 国产性做久久久久久| 蜜臀久久久久久久| 国产日韩欧美麻豆| 欧美群妇大交群中文字幕| 视频在线观看91| 免费成人深夜小野草| 欧美电影免费观看高清完整版在线| 亚洲人成影院在线观看| 欧美性大战久久久久久久蜜臀 | 开心九九激情九九欧美日韩精美视频电影| 97精品久久久午夜一区二区三区| 国产精品不卡一区| 欧美一区二区三区视频免费播放| 亚洲精品成a人| 欧美亚洲一区二区在线| 五月婷婷久久丁香| 久久看人人爽人人| 99国产精品99久久久久久| 亚洲超碰精品一区二区| 中文字幕 久热精品 视频在线 | 在线视频国内一区二区| 久久99久久99小草精品免视看| 国产日韩av一区| 久久久一区二区三区| 欧美日韩情趣电影| 成人黄色电影在线 | 亚洲成人福利片| 婷婷综合另类小说色区| 久久精品一二三| 亚洲一区二区在线免费观看视频| 成人午夜又粗又硬又大| 久久av资源站| 欧美mv和日韩mv的网站| 亚洲国产成人av| 丝袜美腿高跟呻吟高潮一区| 欧美日韩精品一区二区三区蜜桃| 国产精品久久二区二区| 在线观看欧美黄色| 亚洲国产日产av| 久久综合视频网| 91网站视频在线观看| 一级精品视频在线观看宜春院| 欧美电视剧在线观看完整版| 欧美一区二区三区四区高清| 国产片一区二区| 欧美亚洲国产怡红院影院| 色悠悠亚洲一区二区| 美国毛片一区二区三区| 日韩午夜av电影| 成人国产精品免费| 一区二区在线观看免费视频播放| 欧美日韩电影在线播放| 黄色小说综合网站| 亚洲人成网站色在线观看| 日韩精品综合一本久道在线视频| 久久久久99精品一区| 97精品久久久久中文字幕| 日本在线播放一区二区三区| 精品久久久久久无| 亚洲欧美福利一区二区| 国产精品视频观看| 久久99精品久久只有精品| 日日夜夜免费精品| 亚洲一区二区三区视频在线播放| 久久精品国产77777蜜臀|