Re: PHP 的 application 變數?
※ 引述《JoeHorn (獅子男)》之銘言:
: ※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: : 恩... 這是來自 Database 版的問題
: : 有人說,不知道 PHP 有像 JSP/ASP 的 application 層級的變數
: : 我大概查了一下,好像有 global 跟 static 這兩個東西可以做到類似的事情?
: : 不過我本身不寫 PHP 囧>
: : 所以還是上來問一下比較保險...
: : 還請各位大大指教 Orz
: 這頁應該有比較接近的答案:
: http://www.php.net/manual/en/language.variables.scope.php
: PHP 支援:
: * global variable
: * static variable
: * normal(dynamic) variable
其實有想過
如果令session id為某定值
這樣每個client存取到的session其實應該是同一個?
如果是這樣就可以共用了
不過有些問題
1. session會在browser關掉重開的時候被清除,指定很長的timeout不知是否可行,
或有辦法強制server忽略browser傳來的clear request
2. session無法儲存所有型態的資料,最近好像有幾篇文有提到
像resource這種無法searialize的資料都不形
3. 這樣就沒有真正的session可用了...
也許可以先
$sid=session_id();
session_id('appvar');
session_start();
然後拿
$_SESSION[$sid]
來當session(超大的一個session file....)
這樣不確定是否可行
session id可能會跑掉...
有必要的話...自己開cookie來存吧
這樣的話$sid=session_id();可能要改成$sid=$_COOKIE['sid']; blahblahblah
4. 不知道一般session寫入硬碟的時機是什麼
我猜測他可能會在connection closed的時候才寫入
這樣的話....在多人同時存取的時候
可能會發生資料不同步的情形
或者也可以自己用searialize(),unserialize()
然後自己讀寫檔案當session
不過效率可能比較慢吧
而且要寫入之後其他人才讀的到
------
寫到這裡現在覺得如果能達成以下條件的話
自己寫檔案也許還算可行
1. Clients不要太多.....(這廢話)
2. 記憶體夠大........(也是廢話)
3. 用ramdisk放檔案(這在unix like system底下很容易辦到)
4.
function setAPP($key,$value){
$_APP=unserialize(file_get_contents($file_in_ram));
$_APP[$key]=$value;
$fp=fopen($file_in_ram,'w');
//Lock
fwrite($fp,serialize($_APP));
//UnLock
fclose($fp);
}
function getAPP($key){
$_APP=unserialize(file_get_contents($file_in_ram));
return $_APP[$key];
}
大概就這樣
那個Lock/UnLock不知道是否必須
這樣其實類似SHM
不過使用上方便多了.....
那個SHM給我的感覺跟malloc()一樣....
這樣完全沒有PHP變數隨便亂用的好處(壞處)啊
--
不過前面的方法似乎比較有趣
後面的方法比較暴力的感覺
不過在PHP底層session的存取應該也跟後者差不多吧....
而且同樣有serialize()的限制
至少這在IO方面是不輸session的(他是寫硬碟)
個人考慮過後比較想用後者
問題比較少,情況明朗
且不require client開cookie
而且符合"既然沒有,自己幹一個"精神XDD
但如果程式中不需要用到session只想用app的話
前者是個不錯的選擇
(假如可行的話.....)
感覺第一種方法的第4點是個致命傷
------
賺完P幣肚子餓了去吃東西....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.22.93.130
※ 編輯: buganini 來自: 163.22.93.130 (02/08 02:03)
※ 編輯: buganini 來自: 163.22.93.130 (02/08 02:05)
※ 編輯: buganini 來自: 163.22.93.130 (02/08 08:38)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 5 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章