2010-06-03

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/

沒有留言: