欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

PHP共享內(nèi)存與shmop的使用

2024-01-28    分類: 網(wǎng)站建設

  現(xiàn)在的Web已經(jīng)對跨會話的通信有很高的需求了,比如在線聊天室等。這些基于客戶端事件而且數(shù)據(jù)更新頻繁的東西當然NodeJS來做比較好。NodeJS除了便于處理事件外,更重要的是它有服務器級的內(nèi)存變量。如果要在PHP中實現(xiàn),最好的方式就是讓會話共享內(nèi)存。    跨會話的通信也經(jīng)常使用數(shù)據(jù)庫或硬盤來中轉(zhuǎn)。硬盤的方法我不推薦,PHP訪問硬盤的效率本身就不高,而且頻繁的讀寫硬盤對硬盤本身也是一種開銷。另一種是數(shù)據(jù)庫中轉(zhuǎn)的方式,這是最容易擴展也是最穩(wěn)定的方式。也許有人會問,數(shù)據(jù)庫不是存在硬盤上的嗎?和直接操作硬盤有什么區(qū)別?因為幾乎所有的數(shù)據(jù)庫都有緩存機制,即使是普通表,也會在內(nèi)存中做緩存,所以它可以比直接訪問硬盤的效率高。而且數(shù)據(jù)庫還有內(nèi)存表模式,表完全在內(nèi)存中,速度當然就更快了。另外,數(shù)據(jù)庫未必是SQL,還有NoSQL,比如使用memcache連關系化解析都省了,這當然效率高。而且這些數(shù)據(jù)庫提供了一系列的標準讀寫操作,所以更容易擴展。   這些數(shù)據(jù)庫已經(jīng)提供了內(nèi)存讀寫,為什么我還要在程序里搞共享內(nèi)存呢?這當然有其它因素需要考慮。雖然數(shù)據(jù)庫也可以直接讀寫內(nèi)存,但是數(shù)據(jù)庫本身畢竟是作為一個數(shù)據(jù)的中轉(zhuǎn)。我們的程序與數(shù)據(jù)庫通信是走端口的,這個過程的開銷不容忽視。至少,與程序內(nèi)直接訪問變量的速度相比,通過端口去查詢數(shù)據(jù)庫,再把數(shù)據(jù)返回給程序,這個過程就太繞了。所以如果某個模塊需要一個高效的跨會話通信功能,直接讓程序訪問內(nèi)存當然是最好的做法。   不過PHP畢竟不是C++,訪問內(nèi)存需要調(diào)用封裝好的函數(shù)的,這效率其實并不高。我在Win7+Apache下測試的結果是讀取內(nèi)存的效率是訪問普通變量的四分之一,不過我覺得這個效率對PHP而言已經(jīng)很高了。另外,PHP并沒有C++那么靈活的指針功能,我們儲存在內(nèi)存中的字節(jié)串也只是字節(jié)串而已,無法直接把它當做對象來讀入。所以這就有很大的局限性,不過對于簡單的通信還是可以勝任的。   PHP做內(nèi)存共享有兩套接口。一個是shm,它實際上是變量共享,會把對象變量序列化后再儲存。使用起來倒是挺方便,但是序列化存儲對于效率優(yōu)先的內(nèi)存訪問操作而言就沒啥意義了。更重要的是它是LinuxOnly的,所以我就不理它了。另外一個是shmop,它是Linux和Windows通用的,不過功能上比shm弱了一些。   接下來手冊上有的東西我就不說了,就說一些使用shmop要注意的地方。首先是shmop_open這個函數(shù)的參數(shù)列表,手冊上說的很模糊。它有4個參數(shù),key、flags、mode、size。flags和size沒啥好說的,key是自己給定的一個數(shù)字,每一個不同的數(shù)字標示一塊不同的內(nèi)存,值隨便給定,只要在自己的程序邏輯中不混亂就行了。當然如果一個Apache下有多個站點就需要事先協(xié)商好,這也是shmop大的一個坑,就是因為這個所以擴展性穩(wěn)定性都不如使用數(shù)據(jù)庫。mode參數(shù)是設置內(nèi)存塊的訪問權限,和文件的權限設置一樣,翻到手冊的chmod函數(shù)介紹上就可以找到詳細信息。還有shmop_delete函數(shù)也很詭異,我測試時創(chuàng)建的內(nèi)存塊是無法通過這個函數(shù)刪除的。查了一些資料后才知道這個函數(shù)只是把塊標記為刪除,進程結束后才釋放。這就坑爹了,進程結束后釋放不是廢話嗎?不調(diào)用它難道進程結束后可以不釋放?總之,一旦使用shmop創(chuàng)建了內(nèi)存塊就釋放不掉的,除非進程結束。所以在創(chuàng)建內(nèi)存塊時建議key參數(shù)用常量而不用變量,否則很有可能造成內(nèi)存泄露。   PHP確實不適合做這樣的工作,顯然NodeJS要方便的多。但是沒辦法,以前的程序是PHP寫的,要全部重寫工作量太大了。我也正在努力的脫離PHP,以后就不糾結這么蛋疼的問題了。 本文來源于成都網(wǎng)站建設公司與成都網(wǎng)站設計制作公司-創(chuàng)新互聯(lián)成都公司!

分享標題:PHP共享內(nèi)存與shmop的使用
網(wǎng)頁網(wǎng)址:http://chinadenli.net/news40/315890.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器、手機網(wǎng)站建設、搜索引擎優(yōu)化、網(wǎng)站維護、品牌網(wǎng)站設計、服務器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
内射精子视频欧美一区二区| 婷婷亚洲综合五月天麻豆| 91超频在线视频中文字幕| 91精品视频免费播放| 久久青青草原中文字幕| 老熟妇乱视频一区二区| 精品国产亚洲区久久露脸| 国产高清在线不卡一区| 伊人色综合久久伊人婷婷| 国产偷拍精品在线视频| 欧美成人免费视频午夜色| 草草视频精品在线观看| 欧美大胆女人的大胆人体| 插进她的身体里在线观看骚| 中文字幕无线码一区欧美| 亚洲国产日韩欧美三级| 国产又长又粗又爽免费视频| 日韩精品视频香蕉视频| 亚洲一区二区精品免费| 国产又粗又黄又爽又硬的| 国产一区二区三中文字幕| 一区二区三区人妻在线| 风韵人妻丰满熟妇老熟女av | 欧美加勒比一区二区三区| 久久机热频这里只精品| 老司机精品福利视频在线播放| 国产性色精品福利在线观看| 日本一本不卡免费视频| 国产精品欧美一级免费| 国产91麻豆精品成人区| 日本精品中文字幕在线视频| 日韩欧美国产精品自拍| 高清一区二区三区不卡免费| 国产精品二区三区免费播放心 | 加勒比人妻精品一区二区| 国内午夜精品视频在线观看| 国产精品免费自拍视频| 日韩欧美国产精品自拍| 在线日韩欧美国产自拍| 欧美一区二区三区五月婷婷| 亚洲黄色在线观看免费高清|