2014-03-24 35 views
0

我已經找到Own SuperGlobal Variable in PHP? 這裏說它沒有辦法以某種方式定義/使用「服務器變量」,這對於不同的用戶/會話將是相同的。 但是幾年過去了,可能會發生什麼變化?現在這樣可能嗎?PHP:定義自己的服務器變量

基本上我想運行由用戶事件觸發的php腳本,但我不想運行更頻繁,例如,每30分鐘一次。所以我的第一個想法是保持「服務器端var(對所有會話/客戶端可見)」,如果用戶觸發事件(例如打開某個頁面),檢查腳本是否最近運行了30分鐘,然後打開頁面,如果沒有然後再打開頁面,例如清除過時/通過的東西。

是的,我明白我可以用mySQL等解決方案...但爲什麼要做workaroud如果PHP將支持我所需要的。

預先感謝您!

+0

請參閱此meta文章 - [如何注意舊的未解答的問題?](http://meta.stackexchange.com/questions/7046/how-do-i-get-attention-for-old -unanswered-問題)。只是再次發佈相同的問題並不是在[so]上完成的方式。 – Lix

+0

除此之外,對於你所描述的特殊用例,我可能只需要一個簡單的_file_結合'filemtime'和'touch' ... – CBroe

回答

1

一個普通的PHP 變量不能超越腳本的當前執行。腳本結束後,所有變量都消失了。這是PHP的基本性質;實際上這是所有計算機程序的基本特性,只是PHP通常總是很快終止。爲了保持數據超出了一個簡單的腳本調用,你有幾種選擇在哪裏存儲數據:

  • 數據庫
  • 文件
  • shared memory(儘管這可以隨時清除)
  • 內存緩存像memcached(基本上是一個內存數據庫服務器)
  • 運行一個持久的PHP腳本並通過套接字與它進行通信(基本上是一個memcache)
  • 不會終止你的腳本,把它寫成守護進程

最近沒有什麼改變。

+0

deceze,謝謝你關於計算機程序的有趣的信息。由於PHP服務器始終在「運行」,我期望它有我想要的東西是合理的(恕我直言) – user2997497

+0

不,「PHP服務器」沒有運行。 * Apache *(或nginx或其他Web服務器)正在運行,它爲每個請求啓動一個獨立的PHP實例。 PHP腳本本身被啓動並不斷被拆除。要編寫一個持久化腳本,你必須明確地使其持久化(通常意味着一個無限循環'while(true){...}')。這與任何其他語言的程序都沒有任何區別。 – deceze

+0

我不得不同意:) – user2997497