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