php實(shí)現(xiàn)多用戶共享數(shù)據(jù),類(lèi)似jsp的application---ATHER Shu(A.S)的Bl
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
需求:想要采用AMFPHP實(shí)現(xiàn),多個(gè)flash端push數(shù)據(jù)到php server,這些數(shù)據(jù)都能保存在server端并且被多個(gè)flash端都能訪問(wèn)到,即類(lèi)似jsp中的application。 結(jié)果發(fā)現(xiàn)php中并未有提供application,而只有session,而session只是代表一個(gè)用戶會(huì)話,而且用戶關(guān)閉瀏覽器就失效,既不能實(shí)現(xiàn)persistence,更不能實(shí)現(xiàn)多用戶share。 為什么php沒(méi)有提供application呢? 關(guān)于此,給大家推薦一個(gè)好文以加深理解: PHP沉思錄--工作模型:http://www.bloggern.com/1557.html 1、一開(kāi)始想用php server端類(lèi)里面寫(xiě)個(gè)static變量,結(jié)果行不通。 class TestStatic { private static $i = 0; function getI() { self::$i++; return self::$i; } } 結(jié)果用amfphp browser查看,每次都返回1。 引申開(kāi)來(lái),普通php中也無(wú)法用static來(lái)實(shí)現(xiàn)多用戶共享數(shù)據(jù)。 <html> <?php class TestStatic { private static $i = 0; static function getI() { self::$i++; return self::$i; } } echo "i的值是 ".TestStatic::getI(); ?> </html> 以上程序是沒(méi)什么實(shí)際意義的,每次都返回1。 原因應(yīng)該很簡(jiǎn)單,因?yàn)閜hp是個(gè)純解釋性的腳本語(yǔ)言,每次瀏覽器去訪問(wèn)一個(gè)php文件,都會(huì)重新解釋一遍該php文件,一旦解釋完成就清空全部此過(guò)程中產(chǎn)生的數(shù)據(jù)、資源等,因此靜態(tài)不靜態(tài)只是在這個(gè)解釋的過(guò)程中才有效果,一旦解釋完成,就沒(méi)有任何意義了。 同時(shí),AMFPHP中“每Call一次Method,一個(gè)新Object Instance產(chǎn)生?!?BR>來(lái)源:Luar's Flash Playground - AMFPHP在Persistent Layer探索 2、sesstion行不通,原因前面有講。 3、那就只有保存文件或者保存數(shù)據(jù)庫(kù)咯。 3.1、搜到個(gè)好帖子,有個(gè)哥們寫(xiě)的用文件的方式實(shí)現(xiàn)多用戶共享, php自寫(xiě)application功能相當(dāng)于asp中的application 3.2、帖子中也有人提出用mysql的memory表實(shí)現(xiàn)內(nèi)存共享,這個(gè)對(duì)于jsp類(lèi)似的application對(duì)象完全可行,當(dāng)然這個(gè)可能會(huì)隨時(shí)崩潰,mysql每次啟動(dòng)都會(huì)清空數(shù)據(jù),只留下一個(gè)空表。 關(guān)于memory(以前叫heap引擎)的一些資料: Mysql Memory引擎的簡(jiǎn)單應(yīng)用 Mysql的內(nèi)存表(Memory engine)的問(wèn)題 4、另外搜到了篇文章: 采用memcache緩存,不過(guò)這需要安裝memcache擴(kuò)展。
MYSQL內(nèi)存(MEMORY)表與Memcache訪問(wèn)速度測(cè)試。 該文章在 2012/6/7 8:53:45 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |