首页 » PHP » 阅读文章
php与flex互相通信的例子
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的方法放到里面。
评论 共1条 (RSS 2.0) 发表评论
祝您幸福!