首頁  >  文章  >  後端開發  >  了解php共享記憶體的概念及優缺點

了解php共享記憶體的概念及優缺點

不言
不言原創
2018-07-06 15:59:351637瀏覽

這篇文章主要介紹了關於了解一下php共享記憶體的概念及優缺點,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

共享記憶體是一種在相同機器中兩個正在運行的進程之間共享和傳遞資料的有效方式,不同進程之間共享的記憶體通常安排為同一段物理記憶體;顧名思義,共享記憶體就是允許兩個不相關的進程訪問同一個邏輯記憶體。一個行程可建立一個可供其他行程存取的記憶體段,只要它分配了正確的權限。每個記憶體段擁有一個惟一的 ID(稱為 shmid),這個 ID 指向一個實體記憶體區域,其他行程可在該區域操作它。在創建並提供了合適的權限之後,同一台機器中的其他進程就可以操作這些內存段:讀取、寫入和刪除,如果某個進程向共享內存寫入數據,所做的改動將立即影響到可以存取同一段共享記憶體的任何其他進程。

這表示使用 C 語言編寫的應用程式可與使用其他語言(例如 Java 或 PHP)編寫的應用程式共用資訊。共享內存在針對大部分語言的實作中得到了廣泛使用,所以存取應該不是問題。要理解訊息,我們可以使用一種標準格式,例如 XML 或 JSON。

共享記憶體的使用是一種在進程之間交換數據的快速方法,主要因為在創建內存段之後傳遞數據,不會涉及內核。這種方法常稱為進程間通訊 (IPC)。其他 IPC 方法包括管道、訊息佇列、RPC 和套接字。當使用需要彼此通訊的應用程式的生態系統時,這種在應用程式之間快速、可靠地交換資料的能力非常有用。取決於生態系統的大小,使用資料庫在應用程式之間交換資訊的常用方法常常會導致查詢緩慢,甚至 I/O 阻塞。使用共享內存,沒有 I/O 會減緩開發人員的進度。

共享記憶體並未提供同步機制,也就是說,在第一個進程結束對共享記憶體的寫入操作之前,並無自動機制可以阻止第二個進程開始對它進行讀取取。所以我們通常需要用其他的機制來同步對共享記憶體的存取。

本文的提議非常簡單,學習如何使用 PHP 建立和操作共享記憶體段,使用它們儲存可供其他應用程式使用的資料集。即使沒有使用共享記憶體交換資料的計劃,它本身也在許多好處,因為它使應用程式能夠遠離 I/O 問題。將資料集直接儲存在記憶體中具有諸多優勢,從 Web 服務資料快取到會話共享。它是一個非常有用的概念,每個 PHP 開發人員都應該知道。

使用共享記憶體的優缺點
1、優點:我們可以看到使用共享記憶體進行進程間的通訊真的是非常方便,而且函數的介面也簡單,資料的共享也使進程間的資料不用傳送,而是直接存取內存,也加快了程式的效率。同時,它也不像匿名管道那樣要求通訊的進程有一定的父子關係。

2、缺點:共享記憶體沒有提供同步的機制,這使得我們在使用共享記憶體進行進程間通訊時,往往要藉助其他的手段來進行進程間的同步工作。

我們可以使用共享記憶體作為獨特的儲存選項,提供快速讀取/寫入操作和進程互通性等優勢。對於Web 應用程序,這意味著:

快取儲存(資料庫查詢、Web 服務資料、外部資料)
會話儲存
應用程式之間的資料交換
此儲存技術不僅對快取有用,也對應用程式之間的資料交換也有用,只要資料以兩端都可讀的格式儲存。不要低估共享內存在 Web 應用程式中的力量。可採用許多不同的方式來巧妙地實現這種存儲,惟一的限制是開發人員的創造力和技能。

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

相關推薦:

php簡單使用shmop函數建立共享記憶體減少伺服器負載

以上是了解php共享記憶體的概念及優缺點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn