■PDO为何物?
POD(PHP Data Object)扩展在PHP5中加入,PHP6中将默认识用PDO连接数据库,所有非PDO扩展将会在PHP6被从扩展中移除。该扩展提供PHP内置类 PDO来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连接不统一的问题。
我是配置在windows下做开发用的。
■PDO的目标
■安装PDO
我这里是WINDOWS下开发用的PDO扩展,要是你要在Linux下安装配置,请到别的地方寻找。
版本要求:
php5.1以及以后版本的程序包里已经带了;
php5.0.x则要到pecl.php.net下载,放到你的扩展库,就是PHP所在的文件夹的ext文件夹下;
手册上说5.0之前的版本不能运行PDO扩展。
配置:
修改你的php.ini配置文件,使它支持pdo.(php.ini这个东西没有弄懂的话,先弄清楚,要修改调用你的phpinfo()函数所显示的那个php.ini)
把
extension=php_pdo.dll前面的分号去掉,分毫是php配置文件注释符号,这个扩展是必须的。
往下还有
;extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_informix.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
各各扩展所对应的数据库是:
Driver name | Supported databases |
---|---|
PDO_DBLIB | FreeTDS / Microsoft SQL Server / Sybase |
PDO_FIREBIRD | Firebird/Interbase 6 |
PDO_INFOR |
Server端+Client端
上篇用了wsdl这个写不用wsdl的.
声明:很简单!!!!!!
参考了如下:
http://blog.111cn.net/phphot/archive/
类文件
<?php
/**
* 实现业务逻辑的类,此类是一个普通类
*
*/
class Basic {
/**
* 返回一个字符串:Hello World!
*
* @return string
*/
public function returnString($test){
return "Hello World!".$test;
}
}
?>
Server
<?php
/**
* Web Service的Server端,包含类文件。
*/
require_once("basic.php");
/**
* 创建Server对象
*/
$arrOptions = array(''uri''=>''checkAPI''); //设置命名空间
$objSoapServer = new SoapServer(null,$arrOptions);
/**
* 注册Basic类的所有方法
*/
$objSoapServer->setClass("Basic");
/**
* 处理请求
*/
$objSoapServer->handle();
?>
Client
<?php
/**
* Client端,首先创建Client对象
*/
$arrOptions = array(''uri''=>''checkAPI'', //设置命名空间
''location''=>''http://localhost/user/soaptest.php'', //设置Server地址
''trace''=>true);
$objSoapClient = new SoapClient(null,$arrOptions);
/**
* 远程调用
*/
$test=''ok123'';
try{
$strReturn = $objSoapClient->returnString($test);
}catch(Exception $e){
}
/**
* 打印结果
*/
echo $strReturn;
?>
fsockopen
以socket方式打开一个连接
我最常用的是模拟post
这个是小李挖掘的到的...不错
至于要模拟get方式....直接file_get_content就行了.
代码见后面
stream_socket_client, 代码见后面
这个和fsockopenfsockopen一样.以socket方式打开一个连接,只是参数不同
stream_socket_server
建立一个socket server端, 代码见后面
如果是建立的是tcp的server 就用stream_socket_accept进行通讯
如果是建立的是udp的server 就用stream_socket_recvfrom和stream_socket_sendto进行通讯,而且stream_socket_server中需要加个参数STREAM_SERVER_BIND
还有个socket扩展,这个是最基础的建立socket,但是从
这里就不介绍了.
---------------------------- stream_socket client---------------------------
<?php
/**
* @name test.php
* @date Sun Jan 27 00:49:00 CST 2008
* @copyright 马永占(MyZ)
* @author 马永占(MyZ)
* @link http://blog.111cn.net/mayongzhan/
*/
$xport = "tcp";
$port = "8001";
$ip = "127.0.0.1";
$address = "{$xport}://{$ip}:{$port}";
$fp = stream_socket_client($address, $errno, $errstr, 1);
if (!$fp) {
echo "$errstr ($errno)<br /> ";
} else {
fwrite($fp, " ");
echo fread($fp, 1024);
fclose($fp);
}
?>
---------------------------- streamSocketServer---------------------------
<?php
/**
* @name test2.php
* @date Sun Jan 27 00:45:57 CST 2008
* @copyright 马永占(MyZ)
* @author 马永占(MyZ)
* @link http://blog.111cn.net/mayongzhan/
*/
header("Content-type: text/html;charset=utf-8");
//设置不超时.服务端当然不能超时
set_time_limit(0);
//得到可用socket
$xportlist = stream_get_transports();
echo "transports: ";
foreach ($xportlist as $value) {
echo "{$value} ";
}
//定义一些东西
$xport = "tcp";
$port = "8001";
$address = "{$xport}://
//建立socketserver
if ($xport==''tcp'') {
$socket = stream_socket_server($address, $errno, $errstr);
}
elseif ($xport==''udp'') {
$socket = stream_socket_server($address, $errno, $errstr, STREAM_SERVER_BIND);
}
if (!$socket) {
echo "{$errstr} ({$errno}) ";
}
else {
echo "listening {$xport}:{$port} ... ";
if ($xport==''tcp'') {
//许可一个socket连接,-1超时
while ($conn = stream_socket_accept($socket,-1)) {
//得到访问的端口
$peer = stream_socket_get_name($conn,true);
echo "$peer ";
fwrite($conn, ''The local time is '' . date("Y-m-d H:i:s "));
fclose($conn);
}
}
elseif ($xport==''udp'') {
do {
//得到访问的端口
$pkt = stream_socket_recvfrom($socket, 1, 0, $peer);
echo "$peer ";
stream_socket_sendto($socket, date("Y-m-d H:i:s "), 0, $peer);
} while ($pkt !== false);
}
//关闭socket
fclose($socket);
}
?>
---------------------------- fsockopen(post)---------------------------
<?php
/**
* @name test.php
* @date Sat Jan 26 23:01:23 CST 2008
* @copyright 马永占(MyZ)
* @author 马永占(MyZ)
* @link http://blog.111cn.net/mayongzhan/
*/
/**
* php 发送POST请求
*
* @param string $url 提交到的地址
* @param array $data 要提交的参数 array(''a''=>'''',''b''=>'''');
* @return string
*/
function virtualPost($url, $data) {
$url = parse_url($url);
if (!$url) return "URL不能解析";
if (!isset($url[''port''])) $url[''port''] = "";
if (!isset($url[''query''])) $url[''query''] = "";
$encoded = "";
while (list($k,$v) = each($data)) {
$encoded .= ($encoded ? "&" : "");
$encoded .= rawurlencode($k)."=".rawurlencode($v);
}
//$fp = stream_socket_client($url[''host''].":".($url[''port''] ? $url[''port''] : 80));
$fp = fsockopen($url[''host''], $url[''port''] ? $url[''port''] : 80);
if (!$fp) return "不能打开到$url[host]的连接";
//发送
fputs($fp, sprintf("POST %s%s%s HTTP/1.0 ", $url[''path''], $url[''query''] ? "?" : "", $url[''query'']));
fputs($fp, "Host: $url[host] ");
fputs($fp, "Content-type: application/x-www-form-urlencoded ");
fputs($fp, "Content-length: " . strlen($encoded) . " ");
fputs($fp, "Connection: close ");
fputs($fp, "$encoded ");
//接受
$line = fgets($fp,1024);
if (!eregi("^HTTP/1.. 200", $line)) return "返回结果错误";
//滤掉空行
$results = "";
$inheader = 1;
while(!feof($fp)) {
$line = fgets($fp,1024);
//把剩余的头信息过滤掉
if ($inheader && ($line == " " || $line == " ")) {
$inheader = 0;
}elseif (!$inheader) {
$results .= $line;
}
}
fclose($fp);
return $results;
}
echo virtualPost(''http://127.0.0.1/test/test2.php'',array(myz=>''马永占''));
?>