首页 » PHP » 阅读文章

php与flex互相通信的例子

2010-08-12 15:55 5759 1 发表评论

AMFPHP
这个是一个远端调用的引擎,效率相当的高,资料笔数越多效率就越高,Ajax下载5000笔要30秒左右,而AMF下载一万笔才需要几秒种,可见其效率之高。
    一个Flex的专案要使用AMFPHP首先要对项目的Flex compiler里的 compiler arguments:进行一个如下配置“-locale en_US -services services_config.xml”。而services_config.xml这个配置文件放在Application一起。
      这是services_config.xml的内容
<?xml version=”1.0″ encoding=”UTF-8″?>
<services-config>
        <services>
                <service id=”amfphp-flashremoting-service” messageTypes=”flex.messaging.messages.RemotingMessage”>
                        <destination id=”pmsAmf”>
                                <channels>
                                        <channel ref=”my-amfphp”/>
                                </channels>
                                <properties>
                                        <source>*</source>
                                </properties>
                        </destination>
                </service>
        </services>
        <channels>
                <channel-definition id=”my-amfphp”>
                        <endpoint uri=”amfphp/gateway.php”/>
                </channel-definition>
        </channels>
</services-config>

         <destination id=”pmsAmf”>是定义这个AMFPHP的名字,而uri=”amfphp/gateway.php”这个就是AMFPHP的相对路径了,我个人觉得在做的时间把AMFPHP一起放在项目文件里,不要用绝对路径。
      这些都定义好了,下面的就是在Flex中使用了,首先
import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;
        import mx.rpc.remoting.RemoteObject;
把这些引用进来,然后就是用他们来定义了
internal var _service:RemoteObject;
_service = new RemoteObject();                  
                    _service.destination = “pmsAmf”;                    
                    _service.source = “pmsQuery.pmsService”;
                    _service.addEventListener(FaultEvent.FAULT, FaultHandler);
       这里的pmsAmf就是在XML里定义的ID,而pmsQuery.pmsService就是AMFPHP 里自定义的类了        ,pmsService就是要远端调用的类,前面的是路径。

internal function FaultHandler (event:FaultEvent):void {
                         Alert.show(event.fault.message,”Error”);
                }
这里是侦听发生的错误不用多说,接 下来就是要调用AMFPHP中自定义的方法了,
public function doLogin(user:String,pass:String):void{
                               _service.doLogin.addEventListener(ResultEvent.RESULT, loginResultHandler);
                             _service.doLogin(user,pass);   

}

internal function loginResultHandler(event:ResultEvent):void{
                                if(event.result == true){
                                 ………….                                
                         }else{
                                 ………………                         }
                       }                        
                                                         
再说一下上面的方法在AMFPHP中对应自定义类的方法

class pmsService{      

        function pmsService(){
                mysql_connect(“localhost”, “root”,”1″);
                mysql_select_db(“pms”);
                //
                mysql_query(“SET NAMES UTF8″);
        }

function doLogin($user,$pass){
                $sql=”SELECT * FROM admin WHERE user = ‘$user’ AND pass=’$pass'”;

                $result = mysql_query($sql);
               
                if(mysql_num_rows($result)>=1){
                       
                        return true;
                }else {
                        return false;
                }
        }

}
最后说一下这个PHP类的路径在Amfphp的services文件夹下面的您可以自己在这个文件夹下再加文件夹,然后把PHP的方法放到里面。

本文地址:http://www.jwzzsw.com/archives/202.html

文章作者:思悟
版权所有 © 转载时请以链接形式注明作者和原始出处!

评论 共1条 (RSS 2.0) 发表评论

  1. 全集然文明说道:

    祝您幸福!

发表评论

联系我 Contact Me

回到页首