找的一些 php Web Service 的资料

SOAP 及其它:

XML-RPC:

更多请看我的365Key

php 的 SOAP 实现主要有:

还有就是 php 自己的 SOAP 函数库。

在 SF 上搜索 nusoap 可以发现有不少的 php 项目都用了 nusoap ,大致看了一下,也感觉 nusoap 比较不错。以后可能就靠它了,不过它的文档不是特别多。

 

php COM ,Zend Studio 4

php 的 windows 版本有一个Windows 的 COM 支持函数库。 因为开发的平台要求要能在上面运行 COM 组件,而平台要求要在 Linux 下运行。因此我只能用一个折衷的办法,就是再加一个 Windows 服务器,实现对 COM 组件的调用,运行,然后提供一个 Web Services 接口,由 linux 服务器提供运行参数,及获取运行结果。

昨晚在写调用 COM 组件的代码的时候,在 Zend Studio 4 下运行得很好,而放到服务器上一运行,apache 就立马当掉。今天把 php 4 换成php 5,就运行得好好的。不知原因所在。

Zend 公司的 Zend Studio 4 上个月就发布了,前几天从 TLF 上下下来了,很不错,速度很快,不像3.5那么耗资源。其它的功能就不用说了,还是那么强。

worldKit & Mapping Flickr

昨天从hedgehog的blog的referer上发现了一个很有趣的网站:Brain Off。上面有一个很好玩的GIS方面的软件:worldKit

worldKit is an easy to use and flexible mapping application for the Web. Light weight GIS. It’s a SWF based app, configured by XML, data fed by RSS. Stand-alone use or integration in larger projects.

它通过XML配置文件设置RSS源,然后程序就可以通过该RSS源获取点的经度和纬度信息,然后在Flash格式的地图中显示。

它现在可以直接支持一部分Blog的RSS源。TypePadBlogger的RSS源可以直接使用。Moveable TypeWordPress 通过对RSS的修改也可获得worldKit的支持。感兴趣的可详见于worldKit的文档

只要在blog中写上geo:lat=xx geo:long=xx,然后worldKit中就可以显示出该经纬度所指示的具体位置。

不过我觉得worldKit最有意思的还不只是上述的功能,它最有意思的是它的Mapping Flickr。方法就是在flickr上的图片中增加格式分别为geo:lat=* 和 geo:long=*的tag,或者写在description里。之后在Flickr上访问该图片时,就可以通过下面这个Bookmarklets:map this flickr.com page来查看这个图片的地理位置。也可将该图片地址中的http://www.flickr.com改为http://brainoff.com/worldkit/flickr来访问。这里有作者的一个例子,其在Flickr上的图片mapping the picture

另外还有mapping del.icio.us的功能,和上面这个类似。

他的Blog上还有很多地图相关的东西,也许他是个地理工作者。以前还从没在网上看到过这么有趣的地理相关的东西。

另外,昨天还从自己的blog的referer里发现了这个blog已经被加进dmoz.org里面了。

AJAX

AJAX 是 Asynchronous JavaScript + XML 的缩写。

传统的Web下,用户提交HTTP请求之后,服务器经过对其一系列处理,会将用户重定向到一个新的页面,或刷新当前界面。

而使用AJAX的话,通过javascript,以及DOM技术,只需要改变页面中由于用户提交而需要改变的那部分。不用再因为用户的每次提交而重新创建一个新页面。因此通过AJAX技术,可以创建出更高级的无刷新的用户界面。

Ajax: A New Approach to Web Applications这篇文章有对AJAX原理的介绍。Nio’s Blog上有对这篇文章的描述。

但要要使用AJAX,要求客户端的浏览器支持Javascript和 XMLHttpRequest object。Javascript好像是没什么问题,不过XMLHttpRequest object现在好像只有IE,Firefox和Safari支持,如Opera就不支持。

目前已经一些网站使用了AJAX,如google的GMail,Groups,Suggest,Maps,Orkut,Flickr也有一些使用了AJAX,如修改图片标题,描述,增加tag等操作部分。

找到了两个使用PHP的AJAX项目:SAJAXJPSpan SAJAX目前的版本是0.5,JPSpan目前的版本是0.4.1Beta。

试用了一下SAJAX,它只有一个文件incl_sajax.php,使用非常容易。它的原理如下:

sajax creates a JavaScript stub function that calls functions you export from your PHP script. It handles all the connection details and calls a callback function of your design when the data is available.

在其网站上有一个用SAJAX做的加法运算的例子例子的源代码

几篇与AJAX相关的文章:

dotClear anti spam 的方法

dotClear最新的SVN版上有了两个新的特性。

一个是增加了一个anti spam的plugin,叫Captcha,在提交comment时,会有一个类似于How much makes three plus two ? (原来是法语,我翻译了)的简单数学四则运算问题。答对了才能发表回复。真是一个很可爱的方法,而且应该比较有效。

另一个是对后台登陆由使用cookie改为使用session。

blog恢复正常,琐事

这个blog从18号起不能访问,那天我刚好要回校。20号到学校后还是不能访问。问了空间提供商才知道是服务器硬件故障,而他还得等到星期一(21号)才能进机房拿机器出去修。昨天下午有一段时间恢复正常了,不过到了晚上服务器又挂了。

原来的服务器除了这次长时间的故障,以前也不是没有问题。由于和smartipb.com在一个服务器上,而smartipb.com常常受DDOS攻击,所以常常会有一两个小时上不去的时候。正好前几天dashao提供了一个C9T的空间,所以干脆把blog转移到上面,美国的服务器怎么还是比较稳定的,而且有cpanel后台,改些设置也比较方便。不过在宿舍访问速度不是很理想,不知其它地方如何。

在这里特别感谢dashao提供空间!

wordpress给hedgehog建了一个新的blog:huangniu.jianqing.net,将他在blogcn上的空间上转移出来。我个人一直很不喜欢blogcn,也没什么特别原因,只是因为它以前曾经连续关了七天,而且丢了我在那上面的大部分数据,于是从此鄙视它,呵呵。

寒假在家里没做什么事情,大部分时间都用在睡觉和玩了。昨天第一天上课就有七节课,极不适应,整天困得不行。而明天就整天没课,这种安排实在不是合理。

这次寒假还发现我家除我和我弟外,我爸爸也在写blog,而且都有一年了,比我现在这个blog还早。

ext/mysqli

ext/mysqli是PHP5和MySQL4.1起ext/mysql的替换器,i意思指的是:improved, interface, ingenious, incompatible or incomplete.

其主要有以下特点为:

  • Easier maintainability The ext/mysql code base has become somewhat complex and messy. Major enhancements in the functionality of MySQL required that various feature sets be enabled or disabled based on the version of the client library. Other issues required that some features be disabled for particular operating systems.
  • Better compatibility The extension needed to conform more closely to the MySQL client library, so that future enhancements to the library could be supported more easily in PHP
  • Backwards compatibility Although the compatibility between ext/mysql and ext/mysqli is not perfect, effort was made to simplify porting applications from ext/mysql to ext/mysqli.

其除了类似ext/mysql中的函数,如:mysqli_query,mysqli_fetch_assoc,mysqli_close等,还支持Prepared Statements。采用Prepared Statements,可以使查询更为安全,更高效。对于大量的查询语句来说,效率确实要高得多,但是如果只是一两句查询的话,就体现不出来了。

下面是一个Prepared Statements的例子(来自PHP手册):

  1. $query = “INSERT INTO myCity (Name, CountryCode, District) VALUES (?,?,?)”;
  2. $stmt = $mysqli->prepare($query);
  3. $stmt->bind_param(“sss”, $val1, $val2, $val3);
  4. $val1 = ‘Stuttgart’;
  5. $val2 = ‘DEU’;
  6. $val3 = ‘Baden-Wuerttemberg’;
  7. /* Execute the statement */
  8. $stmt->execute();
  9. $val1 = ‘Bordeaux’;
  10. $val2 = ‘FRA’;
  11. $val3 = ‘Aquitaine’;
  12. /* Execute the statement */
  13. $stmt->execute();
  14. /* close statement */
  15. $stmt->close();

新春愉快

在此除夕之夜,预祝各位朋友们新春愉快哈!!!

村里现在到处鞭炮,烟花声,都觉得有点吵了,这么说好像有点大逆不道,呵呵。估计这热闹还得持续五六个小时。

近来受垃圾留言影响,暂时关闭了以前大部分blog的留言功能。