随笔 - 8  文章 - 55  trackbacks - 0
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(6)

随笔分类

随笔档案

文章分类

文章档案

朋友的Blog

最新评论

阅读排行榜

评论排行榜

AMFPHP在Persistent Layer探索 (28-05-2005)
我發現一個奇怪的現象,如果一個Session Value在Constructor時已經產生,例如:
class test {
  function test() {
    // Method Table從略...
    $_SESSION['myVar'] = "constructor";
  }
  function setVar($value) {
    $_SESSION['myVar'] = $value;
  }
  function getVar() {
    return $_SESSION['myVar'];
  }
}
setVar無法覆蓋該Session Value,getVar傳回的結果是"constructor",有誰知道為什麼?
(原因已經知道,自己真蠢,哈哈,前面已經解釋了)

Persistence有了點小小的眉目,下一步就是想想怎樣做O/R Mapping...

P.S. 發現Openamf有一個有趣 範例 ,它的Persistence是怎樣實現?Add Person後,關閉Browser,再打開,搜尋該記錄,仍然存在!(沒有用Database)

首先先強調一點:Flash Remoting使用HTTP,HTTP是一個Stateless Protocol,所以它不會記住之前的東西,所以有人以為可以這樣做:

class test {
  function test() {
    // Method Table從略...
  }
  function setVar($value) {
    $this->myVar = $value;
  }
  function getVar() {
    return $this->myVar;
  }
}
先用setVar儲下數值後,之後可以用getVar取回數值,是沒有可能的;因為每Call一次Method,一個新Object Instance是會產生

正常做法,當然是利用Session,AMFPHP 1.0開始,第一次連接一個Class時,已經自動處理了Session,不用再用session_start()。另外,在一個純Flash應用中,不用擔心Flash處理不到Session,當包著SWF的HTML(PHP)載入時,Session已經可以產生(假設Cookie沒有被Disabled)。當PHP通過AMFPHP找不到Session時,它才會產生新的Session(例如Cookie被Disabled),SessionID會通過URL去傳送,所以連去Remoting Gateway時,在NetConnection Debugger,可以看到:
...gateway.php?PHPSESSID=6362...

回到正題,可以使用Session保持Persistence時,例如:

class test {
  function test() {
    // Method Table從略...
  }
  function setVar($value) {
    $_SESSION['myVar'] = $value;
  }
  function getVar() {
    return $_SESSION['myVar'];
  }
}
posted on 2006-06-07 09:44 blog搬家了--[www.ialway.com/blog] 阅读(369) 评论(0)  编辑  收藏 所属分类: Flash Remoting

只有注册用户登录后才能发表评论。


网站导航: