PHP實現(xiàn)類似ASP里的Application對象
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
以前搞過一段時間的asp,覺得application這個對象很爽。。可以很容易的寫一個聊天室。。。后來逐漸轉到php,就一直為這事郁悶。。因為php里面沒有對應的東西。數(shù)據(jù)只能往數(shù)據(jù)庫或者文件里面寫才能實現(xiàn)共享。 今天在公司做聊天室的時候,靈機一動,居然讓我發(fā)現(xiàn)了一神奇的方法~~哈哈:
PHP里面的$_SESSION變量可以實現(xiàn)類似Application的功能,但重點在它不能跨瀏覽器進程,或者說是跨用戶。。只能是單個用戶操作不同頁面時候的變量傳遞,是一種cookie的替代方案。 眾所周知,php里,調(diào)用session_start()之后,客戶瀏覽器會收到一個大概名叫PHPSESSID的cookie,這個叫session_id。不同頁面的參數(shù)共享就是靠這個變量實現(xiàn)的。 有時,由于客戶端瀏覽器或者其他什么神奇的原因,導致無法正常發(fā)送 PHPSESSID的時候,我們可以手動發(fā)送,然后在php里面的session_start();之前,調(diào)用session_id("sessionid在這里");手工指定session_id ,這樣,就可以讓session工作正常。(比如瀏覽器不支持cookie,或用flash上傳文件的時候) 好了,關鍵的東西來了。如果我們讓每個用戶的session_id都一樣會怎么樣? 哈哈。ASP的Application功能便呼之欲出~~~ 實現(xiàn)方法非常簡單: 在每個php頁面的前面都寫上下面的代碼: session_id("xxxx"); session_start(); 然后,你就可以像用Application對象那樣來使用$_SESSION了。。~~哈哈哈哈~~~爽吧~~ PS:ASP的Application對象是存儲在內(nèi)存里面的,而PHP的SESSION一般默認是用文件來存的。不過也可以設置php.ini讓php用mysql數(shù)據(jù)庫存,甚至用memcached來存~~具體方法就不詳述了。。 chy提到session本來的作用是保存用戶的登錄信息等,是非常有用的。我這樣一弄,session就失去了它原有的功能。所以我搞了一個函數(shù),可以實現(xiàn)全局session和局部session共存。互不干擾。 /* 當然,這樣操作的成本有點高。。不過在實際使用中,基本不會遇到使用全局session和局部session的頻率都很高的情況。所以可以按需求封裝局部session或者是全局session。 上面那個函數(shù)封裝的是全局session,稍微修改就可以實現(xiàn)局部session。 該文章在 2012/6/7 1:56:51 編輯過 |
關鍵字查詢
相關文章
正在查詢... |