摘要:共享內(nèi)存的使用是一種在進(jìn)程之間交換數(shù)據(jù)的快速方法,主要因?yàn)樵趧?chuàng)建內(nèi)存段之后傳遞數(shù)據(jù),不會涉及內(nèi)核。使用共享內(nèi)存,沒有會減緩開發(fā)人員的進(jìn)度。不要低估共享內(nèi)存在應(yīng)用程序中的力量。
共享內(nèi)存是一種在相同機(jī)器中兩個正在運(yùn)行的進(jìn)程之間共享和傳遞數(shù)據(jù)的有效方式,不同進(jìn)程之間共享的內(nèi)存通常安排為同一段物理內(nèi)存;顧名思義,共享內(nèi)存就是允許兩個不相關(guān)的進(jìn)程訪問同一個邏輯內(nèi)存。一個進(jìn)程可創(chuàng)建一個可供其他進(jìn)程訪問的內(nèi)存段,只要它分配了正確的權(quán)限。每個內(nèi)存段擁有一個惟一的 ID(稱為 shmid),這個 ID 指向一個物理內(nèi)存區(qū)域,其他進(jìn)程可在該區(qū)域操作它。創(chuàng)建并提供了合適的權(quán)限之后,同一臺機(jī)器中的其他進(jìn)程就可以操作這些內(nèi)存段:讀取、寫入和刪除,如果某個進(jìn)程向共享內(nèi)存寫入數(shù)據(jù),所做的改動將立即影響到可以訪問同一段共享內(nèi)存的任何其他進(jìn)程。
這表明使用 C 語言編寫的應(yīng)用程序可與使用其他語言(比如 Java 或 PHP)編寫的應(yīng)用程序共享信息。共享內(nèi)存在針對大部分語言的實(shí)現(xiàn)中得到了廣泛使用,所以訪問應(yīng)該不是問題。要理解信息,我們可以使用一種標(biāo)準(zhǔn)格式,比如 XML 或 JSON。
共享內(nèi)存的使用是一種在進(jìn)程之間交換數(shù)據(jù)的快速方法,主要因?yàn)樵趧?chuàng)建內(nèi)存段之后傳遞數(shù)據(jù),不會涉及內(nèi)核。這種方法常常稱為進(jìn)程間通信 (IPC)。其他 IPC 方法包括管道、消息隊(duì)列、RPC 和套接字。當(dāng)使用需要彼此通信的應(yīng)用程序的生態(tài)系統(tǒng)時,這種在應(yīng)用程序之間快速、可靠地交換數(shù)據(jù)的能力非常有用。取決于生態(tài)系統(tǒng)的大小,使用數(shù)據(jù)庫在應(yīng)用程序之間交換信息的常用方法常常會導(dǎo)致查詢緩慢,甚至 I/O 阻塞。使用共享內(nèi)存,沒有 I/O 會減緩開發(fā)人員的進(jìn)度。
共享內(nèi)存并未提供同步機(jī)制,也就是說,在第一個進(jìn)程結(jié)束對共享內(nèi)存的寫操作之前,并無自動機(jī)制可以阻止第二個進(jìn)程開始對它進(jìn)行讀取。所以我們通常需要用其他的機(jī)制來同步對共享內(nèi)存的訪問。
本文的提議非常簡單,學(xué)習(xí)如何使用 PHP 創(chuàng)建和操作共享內(nèi)存段,使用它們存儲可供其他應(yīng)用程序使用的數(shù)據(jù)集。即使沒有使用共享內(nèi)存交換數(shù)據(jù)的計(jì)劃,它本身也在許多好處,因?yàn)樗箲?yīng)用程序能夠遠(yuǎn)離 I/O 問題。將數(shù)據(jù)集直接存儲在內(nèi)存中具有諸多優(yōu)勢,從 Web 服務(wù)數(shù)據(jù)緩存到會話共享。它是一個非常有用的概念,每個 PHP 開發(fā)人員都應(yīng)該知道。
使用共享內(nèi)存的優(yōu)缺點(diǎn)
1、優(yōu)點(diǎn):我們可以看到使用共享內(nèi)存進(jìn)行進(jìn)程間的通信真的是非常方便,而且函數(shù)的接口也簡單,數(shù)據(jù)的共享還使進(jìn)程間的數(shù)據(jù)不用傳送,而是直接訪問內(nèi)存,也加快了程序的效率。同時,它也不像匿名管道那樣要求通信的進(jìn)程有一定的父子關(guān)系。
2、缺點(diǎn):共享內(nèi)存沒有提供同步的機(jī)制,這使得我們在使用共享內(nèi)存進(jìn)行進(jìn)程間通信時,往往要借助其他的手段來進(jìn)行進(jìn)程間的同步工作。
我們可以使用共享內(nèi)存作為一種獨(dú)特的存儲選項(xiàng),提供快速讀/寫操作和進(jìn)程互操作性等優(yōu)勢。對于 Web 應(yīng)用程序,這意味著:
緩存存儲(數(shù)據(jù)庫查詢、Web 服務(wù)數(shù)據(jù)、外部數(shù)據(jù))
會話存儲
應(yīng)用程序之間的數(shù)據(jù)交換
此存儲技術(shù)不僅對緩存有用,也對應(yīng)用程序之間的數(shù)據(jù)交換也有用,只要數(shù)據(jù)以兩端都可讀的格式存儲。不要低估共享內(nèi)存在 Web 應(yīng)用程序中的力量。可采用許多不同的方式來巧妙地實(shí)現(xiàn)這種存儲,惟一的限制是開發(fā)人員的創(chuàng)造力和技能。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/62002.html
摘要:共享內(nèi)存的使用是一種在進(jìn)程之間交換數(shù)據(jù)的快速方法,主要因?yàn)樵趧?chuàng)建內(nèi)存段之后傳遞數(shù)據(jù),不會涉及內(nèi)核。使用共享內(nèi)存,沒有會減緩開發(fā)人員的進(jìn)度。不要低估共享內(nèi)存在應(yīng)用程序中的力量。 共享內(nèi)存是一種在相同機(jī)器中兩個正在運(yùn)行的進(jìn)程之間共享和傳遞數(shù)據(jù)的有效方式,不同進(jìn)程之間共享的內(nèi)存通常安排為同一段物理內(nèi)存;顧名思義,共享內(nèi)存就是允許兩個不相關(guān)的進(jìn)程訪問同一個邏輯內(nèi)存。一個進(jìn)程可創(chuàng)建一個可供其他進(jìn)...
摘要:請注意,此函數(shù)返回一個編號,其他函數(shù)可使用該編號操作該共享內(nèi)存段。從內(nèi)存段讀取數(shù)據(jù)從共享內(nèi)存段讀取數(shù)據(jù)很簡單。函數(shù)將該內(nèi)存段標(biāo)記為刪除,阻止任何其他進(jìn)程打開它。 在之前的一篇博客[了解一下共享內(nèi)存的概念及優(yōu)缺點(diǎn)]已經(jīng)對共享內(nèi)存的概念做了說明。下面就來簡單使用共享內(nèi)存(其實(shí)也可以用其他工具,比如redis) PHP做內(nèi)存共享有兩套接口。一個是shm,它實(shí)際上是變量共享,會把對象變量序列化...
摘要:請注意,此函數(shù)返回一個編號,其他函數(shù)可使用該編號操作該共享內(nèi)存段。從內(nèi)存段讀取數(shù)據(jù)從共享內(nèi)存段讀取數(shù)據(jù)很簡單。函數(shù)將該內(nèi)存段標(biāo)記為刪除,阻止任何其他進(jìn)程打開它。 在之前的一篇博客[了解一下共享內(nèi)存的概念及優(yōu)缺點(diǎn)]已經(jīng)對共享內(nèi)存的概念做了說明。下面就來簡單使用共享內(nèi)存(其實(shí)也可以用其他工具,比如redis) PHP做內(nèi)存共享有兩套接口。一個是shm,它實(shí)際上是變量共享,會把對象變量序列化...
閱讀 2472·2021-11-24 09:39
閱讀 3518·2019-08-30 15:53
閱讀 594·2019-08-29 15:15
閱讀 2903·2019-08-26 13:23
閱讀 3212·2019-08-26 10:48
閱讀 643·2019-08-26 10:31
閱讀 748·2019-08-26 10:30
閱讀 2359·2019-08-23 18:32