顯示具有 amfphp 標籤的文章。 顯示所有文章
顯示具有 amfphp 標籤的文章。 顯示所有文章

2010-06-03

amfphp-HelloWorld

開始進入Flash remoting的第一個程式…helloworld
首先,我們先寫好一個叫HelloWorld.php的php程式…原始碼如下


class HelloWorld { //注:class的HelloWorld要跟你存檔的檔名一樣

    function Say ($message) {

        return '回:' . $message;

    }

}

?>
存檔後要切記,這個HelloWorld.php要放在amfphp/service底下才算活在amfphp中…要不然,你會無法使用它
放好後,可以先做測試,你可以連上你amfphp的browser,你會看到在左手邊的那一個框中會出現你這個叫HelloWorld的東西,如果沒出現,那就是你的程式沒放在amfphp/service底下
如果有看到,就點它一下,你就會在右手邊看到這支程式的狀況,你可以點到test的頁籤,會看到一個叫Say的東東,沒錯,這個就是上面HelloWorld.php的function Say()
而在底下會看到一個叫message接著一個輸入框的,也沒錯,這東西就是function Say()中要傳的$message…接著你就可以在文字框中輸入值,再按下Call的按鈕,你就會看到底下的result會出現回應值
如圖
===

amfphp---介紹

架好server端之後,當然就要開始從初入門玩起
在寫程式之前,先介紹一下為什麼要用amfphp而不用像FMS(Flash Media Server)或RED5
因為呀,我手邊拿php的環境比較快,FMS雖然有試用版,但整體而言吃資源頗大,而且rtmp的串流技術是adobe的閉門技術,感覺上就讓我沒有feel…
而RED5嘛,它跟amfphp一樣是free-source,只不過是java base,前置環境跟write code也是要有一些條件
所以,我就拿amfphp先來入手

但,我必須說,FMS的入手是很快的,在WIN的環境下,安裝好就都好了
而amfphp比較會遇上config的問題…
比較常見的就是編碼跟debug…
所謂編碼問題,這個好解決,只要到amfphp/gateway.php的127行,你應該會看到
$gateway->setCharsetHandler("utf8_decode", "ISO-8859-1", "ISO-8859-1");
把ISO-8859-1改成UTF-8來用unicode來做就行了…中文就會正常
不過網路上也有人說要把utf8_decode改成iconv或mbstring,因為我不知道為何要這樣修改,所以我是沒這樣改啦

再來,會有一些可能會遇到的bug…修改的方式如下
  1. amfphp 1.9在php 5.3以上的版本會有問題??

    基本上應該是說2010/02/02以前出品的amfphp 1.9會有這個不相容的問題…2/2當時的版本就沒這個問題了…那主要的問題是因為,2/2之前的,他仍是使用在php 5.3以後就被禁掉的eregi_replace…你可以到amfphp/core/shared/util/MethodTable.php中的505行,你找到eregi_replace的,都改用preg_replace就行了;可以參考http://labs.almerblank.com/2009/10/amfphp-fatal-errors-after-php-5-3-upgrade-part-2/
  2. 在寫flash與amfphp溝通,在測試時會看到錯誤「Error #2044: Unhandled NetStatusEvent:. level=error, code=NetConnection.Call.BadVersion at Main()」

    大概有可能是二個因素…

    a. 中文問題,你可能沒改用UTF-8的編碼(如上述的編碼問題)

    b. PRODUCTION_SERVER debug message:你可以在amfphp/gateway.php的132行看到它,主要有可能的發生的原因應該是你是遠端連線,而非本地端連線(我從字面上看好像是這樣的意思啦)…如果你都不是localhost的測試的話,比較有可能會出現這個Error,所以,你只要把135行跟138行註解之後,應該就會正常了;可以參考http://gslfaye.blog.163.com/blog/static/122125221201041911938788/

amfphp---踏逐Flash remoting的第一步[架設]

架設非常的簡單
先到官網下載最新的release的版本,我下載的時候是1.9(2010/02/02出品)
再來就是把下載好的檔案解壓後,應該會有[_MACOSX]跟[amfphp 1.9]二個資料夾,前面那一個應該用不到
後面的[amfphp 1.9]我是改成叫[amfphp]之後,就丟上伺服器(linux + apache + php)的web底下
測試是否架設ok?
瀏覽器網址輸入:http://webpath/amfphp/browser/index.html
第一次成功開啟的話,會出現amfphp的一個詢問框,那個就維持預設值唄(我是這樣做的),按下save之後,然後就會看到一個湛藍色的底然後左手邊白框的一個頁面…
有看到就代表你架設ok了