zoukankan      html  css  js  c++  java
  • phprpc的使用示例以及报错Fatal error: Cannot redeclare gzdecode() in D:wampwwwimmocphprpccompat.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:wampwwwimmocphprpccompat.php on line 182
    报错。


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

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

    if (! function_exists('gzdecode')) {
        //将gzdecode函数包括进来
     }

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



  • 相关阅读:
    MVC EF 修改 封装类 通用泛型方法(一)
    泛型方法动态生成表达式树 Expression
    SEO 优化,网站推广优化教程100条(SEO,网站关键字优化,怎么优化网站,如何优化网站关键字)
    NPOI mvc easyui 根据Excel模板 生成Excel
    A generic error occurred in GDI+. 上传图片报错
    bootstrap-wysiwyg 结合 base64 解码 .net bbs 图片操作类 (三) 图片裁剪
    jquery.validate 验证(支持前台js验证通过,然后ajax后台数据校验)二
    jquery.validate 验证(支持前台js验证通过,然后ajax后台数据校验)
    Font-Awesome 体验 鼠标进入图标变大
    .net cookie
  • 原文地址:https://www.cnblogs.com/cmderq/p/9130886.html
Copyright © 2011-2022 走看看