Re: [請益] 伺服器變數
※ 引述《JoeHorn (獅子男)》之銘言:
: ※ 引述《JoeHorn (獅子男)》之銘言:
: : 基本上,要硬幹也是可以的。
: : 推 arzbar:問題還是一樣 就算每支都require 但是資料還是沒辦法帶到 03/20 04:00
: : → arzbar:別的user 身上... 03/20 04:01
: : → arzbar:只能靠 file or db 去傳遞現在值 03/20 04:01
: 你們對「user」的定義是啥?
: 如果「user」是單一 PHP 系統的 web wlient ,那根本就不用來問伺服器級變數,
: 隨便找個開放源碼的 PHP 系統(phpBB、OSC、Gallery、...)都可以看到作法。
: 「user」這個角色必須針對的是系統開發,或是應用者,伺服器級的變數才有意義。
: (ex:某 A 在伺服器上面放 phpBB、某 B 在同一台伺服器放了 Gallery)
: 而且,auto_prepend_file 的檔案可以連接資料庫,也可以放 Class、...。
我不知道各位有沒有寫過ASP或者ASP.net。ASP/ASP.net的Application變數
是一種在同一個Application範圍內的所有頁面,所有使用者,都可以存取
得到的變數。這裡的使用者指的是前來瀏覽這個Application範圍內網頁的
訪客,不是主機作業系統上的使用者。
PHP透過auto_prepend_file在每個程式前面插入該程式,這雖然可以讓每個
程式(以及使用者)共享某些資料,但是問題在於這些資料是不能被改變的。
ASP/ASP.net程式可以用類似以下的方式讀取Application變數:
TotalUserLabel.Text = Application["TotalUser"].ToString();
但是除了讀取,還可以把資料寫到Application層級去:
Application.Add("TotalUser", 100);
或者
Application["TotalUser"] = 101;
整個app範圍內的所有使用(訪客)都會看到這個變數的改變。PHP的
auto_prepend_file沒有辦法做到這個。雖然可以在這個檔案裡面放入一些
變數讓每個程式(以及訪客)都讀取得到,但是當程式試圖去「變更」這些
變數的資料的時候,這些變更影響的範圍都只限於該支程式,該程式執行
完畢,下次執行的時候就又恢復成以前未變更的值了。或者頂多透過
SESSION變數,讓同一個訪客瀏覽的多個頁面都能看到之前的變更。
但是重點在於「其他訪客」並無法看到這些「變更」。這也就是Application
層級變數跟session層級變數不同的地方。
PHP如果要做到對某個參數的變更,所有訪客都看得到,那勢必必須自己
實作一些方式把這些資料儲存在某個地方(檔案或者資料庫或者甚至存在
shared memory),另外也要自己實作一些方式去讀取這些共用資料。
為什麼得自己實作?就是因為PHP本身沒有提供咩。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.153.19
→
03/20 14:58, , 1F
03/20 14:58, 1F
→
03/20 16:35, , 2F
03/20 16:35, 2F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章
4
11