Re: [請益] 伺服器變數

看板PHP作者 (請勿忘記密碼)時間17年前 (2008/03/20 16:54), 編輯推噓7(7019)
留言26則, 4人參與, 最新討論串6/10 (看更多)
※ 引述《JoeHorn (獅子男)》之銘言: : ※ 引述《MrMarcus (請勿忘記密碼)》之銘言: : : 我不知道各位有沒有寫過ASP或者ASP.net。ASP/ASP.net的Application變數 : : 是一種在同一個Application範圍內的所有頁面,所有使用者,都可以存取 : : 得到的變數。這裡的使用者指的是前來瀏覽這個Application範圍內網頁的 : : 訪客,不是主機作業系統上的使用者。 : 我之前的文章有說到這段: : 如果「user」是單一 PHP 系統的 web wlient ,那根本就不用來問伺服器級變數, : 隨便找個開放源碼的 PHP 系統(phpBB、OSC、Gallery、...)都可以看到作法。 : 把資料放在 Config 檔,或是放在後端 DB ,都可以解決。 : 有必要一定得用 application variables ? : : 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層級變數不同的地方。 : 您在這邊講「整個app範圍內的所有使用(訪客)都會看到這個變數的改變。PHP的 : auto_prepend_file沒有辦法做到這個。」,下一段似乎直接駁斥了這一段的說法? 我不認為後面那段自己駁斥了這一段。 任何缺少的功能我們當然可以自己想辦法做出來。以這個例子來講,也許我們可以 做出自己的lib來達到或者模擬ASP/ASP.net的application變數的功能。但是這跟 auto_prepend_file有什麼關係?這個功能是因為auto_preprend_file才做出來的嗎? 不是吧。auto_prepend_file只是會自動把某個檔案的內容塞到每一個php程式前面 而已。好,就算我把自己做出來的class放在這個檔案裡面好了,這樣我不需要在 程式裡面用include或者require把這個class叫進來,方便多了。但是這樣我會說 這個app變數的功能是因為auto_prepend_file才做出來的嗎?不會吧。 : : PHP如果要做到對某個參數的變更,所有訪客都看得到,那勢必必須自己 : : 實作一些方式把這些資料儲存在某個地方(檔案或者資料庫或者甚至存在 : : shared memory),另外也要自己實作一些方式去讀取這些共用資料。 : : 為什麼得自己實作?就是因為PHP本身沒有提供咩。 : 辦法是人想出來的,自己實做會比較差? 我可沒說自己做的東西就會比較差。請不要自己猜。我只是說,PHP本身沒有 提供類似ASP/ASP.net的application變數這項功能。這有錯嗎?沒有就是沒有。 至於引申出「自己做的就會比較差」這個,那可不是我講的。我也沒有暗示 「自己做的就會比較差」這件事。 說實在話,今天我也得感謝PHP,才能掙口飯吃。說PHP的壞話對我來說有什麼 好處?沒有啊。只不過剛好我也有一部份得感謝ASP/ASP.net。我不會在這裡 說PHP好還是ASP/ASP.net好,那也不是我能評論的。今天只不過是有人問了 PHP有沒有類似app變數的功能,答案是沒有。就這樣。原發問者會因為這樣就 不用PHP嗎?這我不曉得。不過在現實環境下,如果真的需要這功能而且就是 得用PHP,我想原作者會去找到可用的函式庫或者自己想辦法生出來的。我們 都是這樣走來的不是嗎。 : 我在網路上看過一段話,意思大概是這樣: : 「如果你寫的 code、應用的 library、使用的軟體都是 well documented 的, : 那你的成果並不是什麼了不起的曠世鋸作。」 : 共勉之~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.153.19

03/20 16:58, , 1F
功能一樣能達到 只是原PO 問有沒有APP 這樣的東西 我也是
03/20 16:58, 1F

03/20 16:59, , 2F
ASP 轉過來的 為了APP 我也翻了一堆文章 最後只能靠紀錄的
03/20 16:59, 2F

03/20 16:59, , 3F
方式來達到ASP 的 APP變數功能 J先生是不是太敏感了?
03/20 16:59, 3F

03/20 17:02, , 4F
怎辦?我也跟 J 大一樣覺得不太蘇湖耶…我也太敏感了嗎?
03/20 17:02, 4F

03/20 17:11, , 5F
或許吧 因為ASP 的APP太方便了 來到PHP 總是會不習慣
03/20 17:11, 5F

03/20 17:13, , 6F
一樓,麻煩您去看看您在之前文章的推文。
03/20 17:13, 6F

03/20 17:14, , 7F
尤其是我提 auto_prepend_file 的那篇文章。
03/20 17:14, 7F

03/20 17:14, , 8F
我真不知道有什麼好火藥味的 沒有像ASP 的 APP 的變數
03/20 17:14, 8F

03/20 17:15, , 9F
變數不能帶到別的 user 身上?
03/20 17:15, 9F

03/20 17:15, , 10F
你只能用變通的方式來做 這不就是答案?
03/20 17:15, 10F

03/20 17:15, , 11F
我不清楚J大有沒有用過ASP 的 APP 但是我可以理解他要的
03/20 17:15, 11F

03/20 17:16, , 12F
並不是要變通的作法 只是單純問個答案而已
03/20 17:16, 12F

03/20 17:16, , 13F
JAVA、.NET、PHP 我都玩過了, App 級變數是很好用..
03/20 17:16, 13F

03/20 17:17, , 14F
重點是「為什麼非用不可?」,.NET 的 App 級變數效能好?
03/20 17:17, 14F

03/20 17:18, , 15F
你們要不要去看看他們的底層實作方式?
03/20 17:18, 15F

03/20 17:18, , 16F
他只有問有沒有這個變數吧? 沒有說非用不可阿
03/20 17:18, 16F

03/20 17:19, , 17F
也沒提到效能阿? 而且 我也沒有要打筆仗阿 只是想表達
03/20 17:19, 17F

03/20 17:19, , 18F
所以你們找都不找,直接丟個「沒有」?
03/20 17:19, 18F

03/20 17:20, , 19F
PHP 沒有APP這個變數 就這樣而已
03/20 17:20, 19F

03/20 17:23, , 20F
如果這種變數是相反的(PHP 支援,.NET 不支援)。
03/20 17:23, 20F

03/20 17:24, , 21F
你們找到的 .NET implement 的 class 要收錢才能下載~ :p
03/20 17:24, 21F

03/20 17:34, , 22F
我其實也不是很想筆戰 但如過下面那篇真的能用的話那真的
03/20 17:34, 22F

03/20 17:35, , 23F
是太好了 我記得原PO還有提到 伺服器關閉 變數消失
03/20 17:35, 23F

03/20 17:35, , 24F
若依照我們後來變通的方式 應該是沒辦法達到那個需求吧?
03/20 17:35, 24F

03/20 17:36, , 25F
還是說各位大大有其他的變通方式? 我是想不到啦 有勞指導
03/20 17:36, 25F

03/20 18:34, , 26F
戰起不相干的東西了.......
03/20 18:34, 26F
文章代碼(AID): #17uYPZ9T (PHP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 6 之 10 篇):
文章代碼(AID): #17uYPZ9T (PHP)