—“我相信现在网络连接的速度这么快,像video这样的东西可以应用在电子商务网站和服务网站。直接和你的顾客面对面地交流、赢得他们的信任,让他们知道你是谁。”
—“在web领域的下一件大事是建立家族(或者继承)的门户(portal),家族成员或者继承人在那里一起建立一个家族站点。这些站点维护家族信息——以数字格式保存家族成员姓名、财产、相片等。这样,全球气候不会破坏或者抹去整个家族的记忆——它将被安全地保存在冗余服务器上,并供奉在‘家族拱顶’页面上。你将拥有关于自己家族和成员之间相互关系的巨大数据池。无论这个家族是否都居住在同一座城镇、州县或者同一个国家、甚至同一个星球上,通过照片和简介上的链接可以直接获得相关信息。很cool吧!另外,可建立一个收费的服务:通过发送的口腔采样药签(mouth swabs)来获得与之匹配的家族成员的DNA序列。并且保存这些信息用来进行DNA比对等不时之需…”
原文地址:http://news.csdn.net/n/20061211/99185.html
本文介绍的是php扩展库SOAP Functions. 本扩展库需要在编译的时候加--enable-soap, 并且需要libxml-2.5.4 以上版本支持。
soap 相比nusoap来说,优势之一是用c开发并编译成php内部函数库,而NuSOAP 完全由PHP语言编写,由一系列PHP 类组成。优势之二,nusoap是很早以前就有的,从2005-07-27 之后就停止更新了,而Soap在php5版本新增,随着php6对webservice的支持,我相信soap这个函数库的地位肯定会不断上升。
php5的Soap 函数库 使用起来很方便,wsdl可以使用zend Development Environment 开发工具生成。
注意几点问题 :
1. 为了提高效率,php对 wsdl文件提供了缓存功能,开发的时候可以将使用ini_set("soap.wsdl_cache_enabled", 0); 让其失效,因为开发过程经常要修改wsdl文件;
2. SOAP(Simple Object Access Protocol) 简单对象访问协议,在php5不仅仅可以提供对象setClass给远程访问调用,还可以提供方法addFunctions。所以SOAP中的 'O' 已经被扩展了 。
3. 服务端有可能取不到客户端POST过来的数据,这可能是php5 soap functions的bugs;解决办法在下文的服务端举例程序中有一段代码:
if (isset($HTTP_RAW_POST_DATA)) {
$request = $HTTP_RAW_POST_DATA;
} else {
$request = file_get_contents('php://input');
}
下面是举例程序源代码。
soap 相比nusoap来说,优势之一是用c开发并编译成php内部函数库,而NuSOAP 完全由PHP语言编写,由一系列PHP 类组成。优势之二,nusoap是很早以前就有的,从2005-07-27 之后就停止更新了,而Soap在php5版本新增,随着php6对webservice的支持,我相信soap这个函数库的地位肯定会不断上升。
php5的Soap 函数库 使用起来很方便,wsdl可以使用zend Development Environment 开发工具生成。
注意几点问题 :
1. 为了提高效率,php对 wsdl文件提供了缓存功能,开发的时候可以将使用ini_set("soap.wsdl_cache_enabled", 0); 让其失效,因为开发过程经常要修改wsdl文件;
2. SOAP(Simple Object Access Protocol) 简单对象访问协议,在php5不仅仅可以提供对象setClass给远程访问调用,还可以提供方法addFunctions。所以SOAP中的 'O' 已经被扩展了 。
3. 服务端有可能取不到客户端POST过来的数据,这可能是php5 soap functions的bugs;解决办法在下文的服务端举例程序中有一段代码:
if (isset($HTTP_RAW_POST_DATA)) {
$request = $HTTP_RAW_POST_DATA;
} else {
$request = file_get_contents('php://input');
}
下面是举例程序源代码。
» 阅读全文
快速搭建一个lampp服务器,从xampp官方网站下载,安装,运行,一步到位。http://www.apachefriends.org/zh_cn/xampp-linux.html#1673
虽然lampp提供了很多编译好的功能,但是为了能使用memcached,需要从http://pecl.php.net/package/memcache下载客户端memcache-2.1.2.tgz,对php重新编译。可以参考以前一篇文章《Memcached的介绍和应用》
然后在php.ini 的extention选项加
如果不想编译,可以直接用附件中已经编译好的memcache.so。将此文件上传到/opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/下
下载文件
虽然lampp提供了很多编译好的功能,但是为了能使用memcached,需要从http://pecl.php.net/package/memcache下载客户端memcache-2.1.2.tgz,对php重新编译。可以参考以前一篇文章《Memcached的介绍和应用》
然后在php.ini 的extention选项加
extension="memcache.so"
如果不想编译,可以直接用附件中已经编译好的memcache.so。将此文件上传到/opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/下
下载文件
无意间从朋友的QQzone里面发现的,一小部分。平时跟老外说话能用上几个就很不错了!:)
Absolutely!—— 绝对正确!
Adorable! —— 可爱极了!
Amazing! —— 太神了!
Anytime! —— 随时吩咐!
Almost! —— 差不多了!
Awful! —— 好可怕呀!
After you. —— 您先。
About when ? —— 大约何时?
All set? —— 一切妥当?
Allow me! —— 让我来!
Baloney! —— 胡扯!荒谬!
Behave! —— 放尊重点!
Bingo! —— 中了!
Boring! —— 真无聊!
Bravo! —— 太棒了!
Bullshit! —— 胡说!
Crazy! —— 疯了!
Deal! —— 一言为定!
Disgusting! —— 好恶心呀!
Drat! —— 讨厌!
Absolutely!—— 绝对正确!
Adorable! —— 可爱极了!
Amazing! —— 太神了!
Anytime! —— 随时吩咐!
Almost! —— 差不多了!
Awful! —— 好可怕呀!
After you. —— 您先。
About when ? —— 大约何时?
All set? —— 一切妥当?
Allow me! —— 让我来!
Baloney! —— 胡扯!荒谬!
Behave! —— 放尊重点!
Bingo! —— 中了!
Boring! —— 真无聊!
Bravo! —— 太棒了!
Bullshit! —— 胡说!
Crazy! —— 疯了!
Deal! —— 一言为定!
Disgusting! —— 好恶心呀!
Drat! —— 讨厌!
在用KFC的自动安装程序启动了项目之后,在根目录下会出现应用项目名称,控制器目录Controllers下有一个默认文件defaults.class.php,里面有hello world举例存在。本文要描述的是如何手动启动KFC的应用项目。
第一步:在网站根目录下,首先将整个KFC框架拷贝过来,然后分别创建目录Controllers(控制器),Models(业务模型),Views(模板视图),tmp(缓存目录),Languages(语言包目录),public(公共目录),Plugins(外部插件目录)。
在public目录下再分别创建目录flashs,images,javascripts,stylesheets,htmls,这些目录将存放全站共享的静态文件。
第二步:创建配置文件config.ini.php,代码如下:
<?php
//Application
//use dev, online
define("APP_STATUS", 'dev');
// define application directory
define("APP_DIR", dirname(__file__));
// define systems KFC directory, it can be relative
define('KFC_DIR', APP_DIR . "/KFC");
// define language
define("APP_LANG",'en');
// use database or not
define("USE_DATABASE",0);
// define session save handle (file, mysql, memcache)
define("SESSION_HANDLE",'file');
// turns off access to post variables through anything
define('HIDE_POST', 1);
// disallow spaces in url parameters, helps prevent sql injection.
define('STRIP_URL_VARS' ,1);
//Global-Site Settings
$GLOBALS['gSiteInfo']['site_name'] = 'KFC Demo';
$GLOBALS['gSiteInfo']['version'] = 'v1.0';
$GLOBALS['gSiteInfo']['site_url'] = 'http://localhost/';
$GLOBALS['gSiteInfo']['site_title'] = "KFC PHP Framework";
$GLOBALS['gSiteInfo']['webcharset'] = 'utf-8';
$GLOBALS['gSiteInfo']['pagenum'] = 15;
?>
第三步:创建一个入口文件index.php,代码如下:
<?php
include(dirname(__file__) . "/config.ini.php");
include(KFC_DIR . "/KFC.php");
$start_time = getmicrotime();
// new application
$kfc = &new KFC(APP_DIR,0);
// set defaults controller (option)
$kfc->setDefController('defaults');
// set default view style
$kfc->setDefView('defaults');
$kfc->run();
$end_time = getmicrotime();
echo "<center>执行时间: ".($end_time-$start_time)."</center>";
?>
第四步:在Controllers下面创建一个目录index(必须跟入口文件名称一致),然后在index目录下创建一个默认控制器文件defaults.class.php,代码如下:
<?php
class defaults extends Controller{
function view_defaults(){
//example use tpl
$assign['homepage']['name'] = "Hello World!";
$this->assign($assign);
$this->display("index.html");
}
}
?>
第五步:在Views目录下创建defaults目录,做为默认主题模板。然后在defaults目录下创建模板index.html
代码如下:
<html>
<base href="<?=$site_url?>">
<title><?=$site_title?></title>
<body>
<?=$homepage['name']?>
</body>
</html>
第六步:完成,在浏览器输入http://localhost/index.php
第一步:在网站根目录下,首先将整个KFC框架拷贝过来,然后分别创建目录Controllers(控制器),Models(业务模型),Views(模板视图),tmp(缓存目录),Languages(语言包目录),public(公共目录),Plugins(外部插件目录)。
在public目录下再分别创建目录flashs,images,javascripts,stylesheets,htmls,这些目录将存放全站共享的静态文件。
第二步:创建配置文件config.ini.php,代码如下:
<?php
//Application
//use dev, online
define("APP_STATUS", 'dev');
// define application directory
define("APP_DIR", dirname(__file__));
// define systems KFC directory, it can be relative
define('KFC_DIR', APP_DIR . "/KFC");
// define language
define("APP_LANG",'en');
// use database or not
define("USE_DATABASE",0);
// define session save handle (file, mysql, memcache)
define("SESSION_HANDLE",'file');
// turns off access to post variables through anything
define('HIDE_POST', 1);
// disallow spaces in url parameters, helps prevent sql injection.
define('STRIP_URL_VARS' ,1);
//Global-Site Settings
$GLOBALS['gSiteInfo']['site_name'] = 'KFC Demo';
$GLOBALS['gSiteInfo']['version'] = 'v1.0';
$GLOBALS['gSiteInfo']['site_url'] = 'http://localhost/';
$GLOBALS['gSiteInfo']['site_title'] = "KFC PHP Framework";
$GLOBALS['gSiteInfo']['webcharset'] = 'utf-8';
$GLOBALS['gSiteInfo']['pagenum'] = 15;
?>
第三步:创建一个入口文件index.php,代码如下:
<?php
include(dirname(__file__) . "/config.ini.php");
include(KFC_DIR . "/KFC.php");
$start_time = getmicrotime();
// new application
$kfc = &new KFC(APP_DIR,0);
// set defaults controller (option)
$kfc->setDefController('defaults');
// set default view style
$kfc->setDefView('defaults');
$kfc->run();
$end_time = getmicrotime();
echo "<center>执行时间: ".($end_time-$start_time)."</center>";
?>
第四步:在Controllers下面创建一个目录index(必须跟入口文件名称一致),然后在index目录下创建一个默认控制器文件defaults.class.php,代码如下:
<?php
class defaults extends Controller{
function view_defaults(){
//example use tpl
$assign['homepage']['name'] = "Hello World!";
$this->assign($assign);
$this->display("index.html");
}
}
?>
第五步:在Views目录下创建defaults目录,做为默认主题模板。然后在defaults目录下创建模板index.html
代码如下:
<html>
<base href="<?=$site_url?>">
<title><?=$site_title?></title>
<body>
<?=$homepage['name']?>
</body>
</html>
第六步:完成,在浏览器输入http://localhost/index.php
转眼间07年即将过了一半,上半年我发布了KFC开发框架,写了一些文档,四月用KFC帮朋友开发了www.wingsworld.cn。过了五一之后同circle一起开发了www.happylinan.com。上周为www.joyth.com快速架起了一个新闻发布系统。这三个项目都应用了KFC框架。总的感觉是开发起来很快。打算在本月继续完善KFC的开发文档。





