瞭解一下php共用記憶體的概念及優缺點

來源:互聯網
上載者:User
這篇文章主要介紹了關於瞭解一下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 應用程式中的力量。可採用許多不同的方式來巧妙地實現這種儲存,惟一的限制是開發人員的創造力和技能。

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.