首頁 >後端開發 >PHP問題 >php中共享記憶體是什麼意思

php中共享記憶體是什麼意思

WBOY
WBOY原創
2022-02-10 15:21:502414瀏覽

在PHP中,共享記憶體是在相同機器中兩個正在運行的進程之間共享和傳遞資料的有效方式,該方式允許兩個不相關的進程訪問同一個邏輯內存,不同行程之間共享同一段實體記憶體。

php中共享記憶體是什麼意思

本教學操作環境:windows10系統、PHP7.1版、DELL G3電腦

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中共享記憶體是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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