phprpc的使用示例以及报错Fatal error: Cannot redeclare gzdecode() in D:\wamp\www\immoc\phprpc\compat.php 处理

今天看书,发现了PHPRPC这个好东东,故在此写下来以作笔记。

PHPRPC 是一个轻型的、安全的、跨网际的、跨语言的、跨平台的、跨环境的、跨域的、支持复杂对象传输的、支持引用参数传递的、支持内容输出重定向的、支持分级错误处理的、支持会话的、面向服务的高性能远程过程调用协议。

下载地址:http://www.phprpc.org/zh_CN/download/ 该版本直接解压后就可以使用,其中bigint.php、compat.php、phprpc_date.php、xxtea.php属于公共文件。不论是客户端还是服务器端都需要这些文件。

phprpc_client.php是客户端文件,如果你只需要使用客户端,那么只要有上面那些公共文件和这个文件就可以使用了,使用时,直接在你的程序中包含 phprpc_client.php 就可以,公共文件不需要单独包含。

dhparams 、dhparams.php phprpc_server.php 这三个文件是服务器端需要的文件。 其中 dhparams 目录中包含的是加密传输时用来生成密钥的参数 。dhparams.php 是用来读取 dhparams 目录中文件的类。 phprpc_server.php 是服务器端,如果你要使用 PHP 来发布 PHPRPC 服务,只需要包含这个文件就可以了。公共文件和 dhparams.php 都不需要单独包含。

PHP 4.3+、PHP 5、PHP 6

客户端要求开启 socket 扩展。

服务器端需要有 IIS、Apache、lighttpd 等可以运行 PHP 程序的 Web 服务器。

如果服务器端需要加密传输的能力,必须要保证 session 配置正确。

示例:

服务器端:

<?php

include("phprpc/phprpc_server.php");

class Hello {

static function HelloWorld()

{

return ‘hello  world!‘;

}

}

$server = new phprpc_server();

$server->add(‘HelloWorld‘,‘hello‘);

$server->start();

?>

客户端:

<?php

include("phprpc/phprpc_client.php");

//这里的URL是服务器端的地址

$client = new phprpc_client("http://127.0.0.1/immoc/phprpc_server.php");

echo $client->HelloWorld();

?>

运行之后,出现了Fatal error: Cannot redeclare gzdecode() in D:\wamp\www\immoc\phprpc\compat.php on line 182

报错。

出现这个问题的原因是:php在5.4版本后,已经自包含了gzdecode()函数,开发者自己定义的gzdecode()函数会与其冲突。

知道了错误的原因,解决起来也就很方便了。在 ....\phpRPC\compat.php文件的第72行(这里,可能有所不同),找到function gzdecode($data, &$filename = ‘‘, &$error = ‘‘, $maxlength = null) ,把这个函数用下面的代码包括起来:

if (! function_exists(‘gzdecode‘)) {

//将gzdecode函数包括进来

}

。这样做了之后,再次运行程序,得到了我们想要的结果:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 03:09:37

phprpc的使用示例以及报错Fatal error: Cannot redeclare gzdecode() in D:\wamp\www\immoc\phprpc\compat.php 处理的相关文章

pip运行报错Fatal error in launcher: Unable to create process using pip.exe

使用pip的时候报错Fatal error in launcher: Unable to create process using pip.exe 解决办法,升级pip python -m pip install -U pip 或者 python -m pip install --upgrade pip

Mysql报错Fatal error: Can&#39;t open and lock privilege tables: Table &#39;mysql.host&#39; doesn&#39;t exist

安装mysql后,启动时候没有启动成功,查看了下日志报错如下:--------------------------------------------- 1   可以:初始化mysql:mysql_install_db 2   目录权限问题chown -R mysql:mysql  /var/lib/mysql [[email protected] local]# less /var/log/mysqld.log1.查看报错信息如下:[ERROR] Fatal error: Can't open

故障案例:主从同步报错Fatal error: The slave I/O thread stops because master and slave have equal MySQL server

场景一:因为数据量非常,大概有1.4T,需要在原先master1-slave1的情况下再创建一个库slave2,并且挂在slave1下,即master1-slave1-slave2的结构.为了方便,当时停掉从库salve1,show master status记录状态,开启log_slave_updates,并且关闭salve1,然后将这个从库的data文件夹直接copy到新的从库,结果在创建slave2和slave1的主从关系时报错 Fatal error: The slave I/O thr

mariadb报错FATAL ERROR: Could not find my_print_defaults

mariadb编译安装后报错 FATAL ERROR: Could not find my_print_defaults /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data &

ndk-build 编译报错 fatal error: error writing to -: Invalid argument } ^

最近下载同事的 Android 工程代码,协作开发一些 Native 底层功能,需要首先编译底层的一些 JNI 的代码库,由于工程较大,且依赖的第三方库比较多,下载完毕后,通过 ndk-build 进行编译,报了一些个奇怪的错误,并指向了代码文件的最后一行,如下所示: fatal error: error writing to -: Invalid argument } ^ 此工程源码一直是同事在 MAC 下进行开发维护的,在同事的环境中是正常的,而我是 Windows 平台,刚开始怀疑是文件类

mysql启动报错:Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist

mysql在首次启动的时候可能会报错:Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist 这时候可以执行脚本 mysql_install_db –user=mysql –ldata=数据存放的路径

maven 启动 报错 Fatal error compiling: 无效的目标发行版

http://news.tuxi.com.cn/news/119999990123162/31622105.html http://lyking2001.iteye.com/blog/837440 针对Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1的解决方案 http://blog.csdn.net/u011734144/article/details/51894942 *************

错误代码报错--fatal error: unexpectedly found nil while unwrapping an Optiona

fatal error: unexpectedly found nil while unwrapping an Optional value 属性列表文件源文件没有allkey的属性,因为用错了属性列表文件.

错误代码报错--fatal error: unexpectedly found nil while unwrapping an Optional value

fatal error: unexpectedly found nil while unwrapping an Optional value   属性列表文件源文件没有allkey的属性,因为用错了属性列表文件.