浏览模式: 标准 | 列表

JSON

JSON-RPC 采用 JSON 格式来序列化数据。JSON 是一种轻量级的数据交换格式。它以 JavaScript 语法来描述数据格式。因此,它在 JavaScript 中进行解析(反序列化)是很容易的,只需要直接通过 eval 函数即可返回结果。但是它的缺点也是很明显的。
  1. 不能正确表示正负无穷大(POSITIVE_INFINITY、NEGATIVE_INFINITY)。
  2. 字符串长度在逐字符分析完之前无法得到,非 JavaScript 语言在反序列化时需要逐字符判断,非常低效。
  3. 数组和对象中的元素个数在解析完之前无法得到。
  4. 只能表示 0 基连续数组,对于 0 基非连续数组、非 0 基数组、关联数组,均不能正确表示。
  5. 无法获知对象所属类。
  6. 不能表示直接递归和间接递归结构的数组和对象,一旦处理此类数据,程序将无法执行甚至引起浏览器崩溃。

PHP

PHPRPC 采用 PHP 格式来序列化数据。PHP 本身提供的序列化方式实际上也是一种通用的轻量级的数据交换格式,其它语言包括 JavaScript 都可以完全实现这种格式的序列化和反序列化。相对于 JSON 格式的来说,它具有以下优点。
  1. 不但可以正确的表示正负无穷大,而且能够区分整数和浮点数。
  2. 字符串长度在进行字符串解析前即可得到,之后可以直接根据长度来分配空间并获取字符串内容,使得任何语言在反序列化时都可以非常高效。
  3. 数组和对象元素个数在解析前即可得到。
  4. 不但可以表示 0 基连续数组,而且还可以正确的表示 0 基非连续数组、非 0 基数组和关联数组。
  5. 可以获知对象所属类。
  6. 可以表示直接递归和间接递归结构的数组和对象,且处理速度非常快。
因此,在序列化方式上,PHPRPC 相比 JSON-RPC 具有明显的优势。在通讯时,PHPRPC 比 JSON-RPC 可以交互的数据更丰富。

» 阅读全文

  1. 前言
  2. 概述
  3. NULL 和标量类型的序列化
  4. 简单复合类型的序列化
  5. 嵌套复合类型的序列化
  6. 自定义对象序列化
  7. Unicode 字符串的序列化
  8. 参考文献

» 阅读全文

5月
09

PHP 5 中调用 Java

PHP 网站所提供的 pecl-5.1.4-Win32.zip 中的 Java 扩展并不好用。不过要想在 PHP 5 中调用 Java 也不难。本文主要来讲解在 Windows 2003 上利用 IIS + PHP 5.1.4 来调用 Java,其它的 PHP 5 版本配置方法也是相同的,这里以 PHP 5.1.4 为例,仅是因为我的安装调试环境是这个。其它环境下的配置是类似的。

» 阅读全文

2006年5月4日(正好是五四青年节),PHP 发布了 5.1.4,我在升级服务器时,顺便把原来的 PHP 4 升级到了这个版本,居然没有遇到什么问题,原来的程序仍然可以运行得很好,看来,对于一般的应用来说 PHP 5 和 PHP 4 没有多大的兼容性问题。不过 PHP 5.1.4 中有几个扩展好像有问题(也可能是不适合跟 IIS 搭配运行),这几个扩展(包括 PHP 网站上提供的 PECL 扩展)是:php_apc.dll、php_blenc.dll、php_exif.dll、php_operator.dll、php_threads.dll。这些扩展如果打开的话,服务器会非常不稳定,甚至会根本无法运行。另外,Oracle 的扩展似乎不能跟 IIS 搭配使用,只能跟 Apache 搭配。

补充:

今天发现还有一个 php_filter.dll 扩展安装以后会引起一个问题:表单中所有的 HTML 内容会被过滤成纯文本。这会使的大多数网站不能正常运行。所以也建议不要开启这个扩展。

» 阅读全文

以前安装的是 AWStats 6.4。前几天发现在 4 月 5 日,AWStats 发布了 6.5 的稳定版,于是在 8 号晚上升级到了 6.5 版。升级还算顺利,把以前的版本删掉,然后把新版本解压缩到原来的目录下,就行了。不过发现原来的 GeoIP 插件不好用了,折腾了半天也没整好这个插件,最后用 GeoIPfree 插件代替了原来的 GeoIP 插件后,发现可以正常显示了。于是认为升级成功了。 两天后,查看统计的时候,发现 8 号、9 号两天的访问量都是 0,于是手动运行日志统计的批处理程序,这才发现原来我根本就没安装 Geo-IPfree 的 Perl 模块,用 ppm install Geo-IPfree 安装该模块之后,再次运行批处理程序,可以正常统计了。然后用同样的方法安装了 Geo-IP-PurePerl 后,发现也能用了,开始不能用的原因原来是自己把 GeoIP.dat 的路径配置错了,真是晕啊!不过因为发现这个问题时晚了一天,所以 8 号的访问信息都丢了。不过尽管如此,这个月的访问量仍然远远的超过了上个月的访问量。 AWStats 的统计功能十分强大,网上对它介绍的文章也比较多,所以我就不写了。大家有兴趣可以看看车东的这篇《AWStats: Apache/IIS的日志分析工具——在GNU/Linux和Windows平台上的使用简介》《AWStats升级到6.5:补充更新》

» 阅读全文