中国设计秀欢迎投稿
中国设计秀设计资源站
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
广州网站设计 维美网站建设 域名注册 虚拟主机 广州网站建设 广州网页设计 虚拟主机 域名注册 素材下载 广告服务 中国品牌形象设计 网站推广 家具中国
求创科技
中国设计秀
中国福网
金视觉
中国设计秀欢迎你
中国品牌形象设计网
中国设计秀
当前位置:网络学院首页 >> 编程开发 >> php >> PHP程序与服务器端通讯方法小结

PHP程序与服务器端通讯方法小结

来源:中国设计秀    作者:    点击:28     加入收藏    发表评论
0
顶一下
中资源
假设有10个网站,分布在各地,它们的库存要同步,而数据库不支持远程连接。

  我们要实时地取得服务器的库存数,可以通过很多种方法,我所知道的有以下几种:

   ·CURL方式

   ·SOCKET方式

   ·PHP5中的SOAP方式

  以下分别给出示例来实现它:

  CURL方式

  client.php

<?php
 $psecode = ’NDE005’;
 $website = ’www.abc.com’;
 $amt = 1;
 $pwd = 123456;
 $ch = curl_init();
 $curl_url = "http://ics1.server.com/index.php?web=" .  $website .
"&pwd=" .  $pwd . "&action=check&pseid=" .  $psecode .
"&amt=" .  $amt;
curl_setopt( $ch, CURLOPT_URL,  $curl_url);
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);//不直接输出,返回到变量
 $curl_result = curl_exec( $ch);
 $result = explode(’,’,  $curl_result);
curl_close( $ch);
print_r( $result);
?>

  服务器端只需按一定的格式输出,然后客户端按此格式接收就可以了如:

echo "OK," .  $fpsecode . "," .  $fbalance ;//以逗号分隔

  SOCKET方式

  这个要借助第三方类库HttpClient,可以到这里下载:http://scripts.incutio.com/httpclient/

<?php
require_once ’class/HttpClient.php’;
 $params = array(’web’ => ’www.abc.com’,
’pwd’ => ’123456’,
’action’ => ’check’,
’pseid’ => ’NDE005’,
’amt’ => 1);
 $pageContents = HttpClient::quickPost(’http://ics.server.com/index.php’,  $params);
 $result = explode(’,’,  $pageContents);
print_r( $result);
?>

  PHP5中的SOAP方式

  server.php

<?php
function getQuote( $fpsecode) {
global  $dbh;
 $result = array();
try {
 $query = "SELECT fprice, fcansale, fbalance, fbaltip FROM tblbalance where upper(trim(fpsecode)) = :psecode limit 1";
 $stmt =  $dbh->prepare( $query);
 $stmt->execute(array(’:psecode’ => strtoupper(trim( $fpsecode))));
 $stmt->bindColumn(’fprice’,  $fprice);
 $stmt->bindColumn(’fcansale’,  $fcansale);
 $stmt->bindColumn(’fbalance’,  $fbalance);
 $stmt->bindColumn(’fbaltip’,  $fbaltip);
while( $row =  $stmt->fetch(PDO_FETCH_BOUND)) {
//
}
} catch (PDOException  $e) {
echo  $e->getMessage();
}
return  $fprice; //你可以返回一个数组
}

 $dsn = ’pgsql:host=192.168.*.* port=5432 dbname=db user=123456 password=123456’;
try {
 $dbh = new PDO( $dsn);
} catch (PDOException  $e) {
die(’Connection failed: ’ .  $e->getMessage());
}
ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache
 $server = new SoapServer("stockquote.wsdl"); //配置文件
 $server->addFunction("getQuote");
 $server->handle();
?>

  stockquote.wsdl

<?xml version =’1.0’ encoding =’UTF-8’ ?>
<definitions name=’StockQuote’
targetNamespace=’http://example.org/StockQuote’
xmlns:tns=’ http://example.org/StockQuote
xmlns:soap=’http://schemas.xmlsoap.org/wsdl/soap/’
xmlns:xsd=’http://www.w3.org/2001/XMLSchema’
xmlns:soapenc=’http://schemas.xmlsoap.org/soap/encoding/’
xmlns:wsdl=’http://schemas.xmlsoap.org/wsdl/’
xmlns=’http://schemas.xmlsoap.org/wsdl/’>

<message name=’getQuoteRequest’>
<part name=’symbol’ type=’xsd:string’/>
</message>
<message name=’getQuoteResponse’>
<part name=’Result’ type=’xsd:float’/>
</message>

<portType name=’StockQuotePortType’>
<operation name=’getQuote’>
<input message=’tns:getQuoteRequest’/>
<output message=’tns:getQuoteResponse’/>
</operation>
</portType>

<binding name=’StockQuoteBinding’ type=’tns:StockQuotePortType’>
<soap:binding style=’rpc’
transport=’http://schemas.xmlsoap.org/soap/http’/>
<operation name=’getQuote’>
<soap:operation soapAction=’urn:xmethods-delayed-quotes#getQuote’/>
<input>
<soap:body use=’encoded’ namespace=’urn:xmethods-delayed-quotes’
encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’/>
</input>
<output>
<soap:body use=’encoded’ namespace=’urn:xmethods-delayed-quotes’
encodingStyle=’http://schemas.xmlsoap.org/soap/encoding/’/>
</output>
</operation>
</binding>

<service name=’StockQuoteService’>
<port name=’StockQuotePort’ binding=’StockQuoteBinding’>
<soap:address location=’http://192.168.3.9/php5/server.php’/>
</port>
</service>
</definitions>

client.php

<?php
 $client = new SoapClient("stockquote.wsdl");
 $result =  $client->getQuote("nde005");
print_r( $result);
?>

2007-09-04 10:20:00    出处:
热点文章/相关文章
关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口