欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

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ù)庫或硬盤來中轉。硬盤的方法我不推薦,PHP訪問硬盤的效率本身就不高,而且頻繁的讀寫硬盤對硬盤本身也是一種開銷。另一種是數(shù)據(jù)庫中轉的方式,這是最容易擴展也是最穩(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ù)的中轉。我們的程序與數(shù)據(jù)庫通信是走端口的,這個過程的開銷不容忽視。至少,與程序內(nèi)直接訪問變量的速度相比,通過端口去查詢數(shù)據(jù)庫,再把數(shù)據(jù)返回給程序,這個過程就太繞了。所以如果某個模塊需要一個高效的跨會話通信功能,直接讓程序訪問內(nèi)存當然是最好的做法。   不過PHP畢竟不是C++,訪問內(nèi)存需要調用封裝好的函數(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ù)只是把塊標記為刪除,進程結束后才釋放。這就坑爹了,進程結束后釋放不是廢話嗎?不調用它難道進程結束后可以不釋放?總之,一旦使用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://aaarwkj.com/news40/315890.html

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

廣告

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

成都seo排名網(wǎng)站優(yōu)化
日本熟女午夜福利视频| 日本五十路亲子在线一区| 国产一级内射麻豆91| 成人三级中文字幕电影| 国产精品久久久久精品三级下载| 亚洲男人天堂免费观看| 麻豆精品情欲人妻一区| 手机不卡在线观看av| 日韩欧美亚洲国产资源| 四影虎影永久免费观看| 97免费公开在线观看| 美女丝袜诱惑国产在线观看| 国产成人亚洲精品乱码| 午夜午色夜之日本福利片| 视频一区视频二区在线| 亚洲国产高清第一第二区| 丰满少妇在线观看网站| 亚洲黄色av网址在线观看| 国产亚洲一区二区三区成人| 国产91精品成人在线观看| 国产精品自拍午夜福利| 国产福利成人一区二区| 成人免费在线国产视频| 国产在线精品91系列| 亚洲精品国产熟女久久| 日韩精品一区高清视频| 亚洲欧洲成熟熟女妇专区乱| 国产精品一区二区三区激情| 91精品国产人妻女教师| 日本欧美国产一区二区| 熟妇人妻中文字幕在线| 91中文字幕国产日韩| 91精品国产高清一区二区性色| 侵犯人妻中文字幕一区二区| 午夜未满十八禁止观看| 久久国产精品一区二区三区| 免费精品99久久久国产| 日韩熟女av中文字幕| 亚洲精品视频一区二区| 午夜福利成人在线免费观看| 在线国产偷拍自拍视频|