我在使用hprose从client发送请求给addAsyncFunction函数注册的方法时使用回调方式 报错
我client端代码是这样的
<?php require_once('Hprose.php'); $test = new HproseHttpClient("http://localhost/hprose/http_server.php"); $args = array("world"); // var_dump($test->invoke("hello", $args, 0, HproseResultMode::Serialized, 0)); // var_dump($test->invoke("hello", $args, 0, HproseResultMode::Raw, 0)); // var_dump($test->invoke("hello", $args, 0, HproseResultMode::RawWithEndTag, 0)); // try { // $test->e(); // } // catch (Exception $e) { // var_dump($e->getMessage()); // } // try { // $test->ee(); // } // catch (Exception $e) { // var_dump($e->getMessage()); // } // $test->hello('async world', function($result, $args, $error) { // echo "result: "; // var_dump($result); // echo "args: "; // var_dump($args); // echo "error: "; // var_dump($error); // }); // $test->hello("async world2", function($result, $args, $error) { // echo "result: "; // var_dump($result); // echo "args: "; // var_dump($args); // echo "error: "; // var_dump($error); // }); // $test->hello("async world3", function($result, $args, $error) { // echo "result: "; // var_dump($result); // echo "args: "; // var_dump($args); // echo "error: "; // var_dump($error); // }); // $test->hello("async world4", function($result, $args, $error) { // echo "result: "; // var_dump($result); // echo "args: "; // var_dump($args); // echo "error: "; // var_dump($error); // }); // $test->hello("async world5", function($result, $args, $error) { // echo "result: "; // var_dump($result); // echo "args: "; // var_dump($args); // echo "error: "; // var_dump($error); // }); // $test->e(function($result, $args, $error) { // echo "result: "; // var_dump($result); // echo "args: "; // var_dump($args); // echo "error: "; // var_dump($error->getMessage()); // }); // var_dump($test->hello("world")); // $test->ee(function($result, $args, $error) { // echo "result: "; // var_dump($result); // echo "args: "; // var_dump($args); // echo "error: "; // var_dump($error->getMessage()); // }); // $test->dnslookup("www.baidu.com", function($result, $args) { // echo "result: "; // var_dump($result); // echo "args: "; // var_dump($args); // }); // // $test->dnslookup("www.hprose.com", function($result, $args) { // // echo "result: "; // // var_dump($result); // // echo "args: "; // // var_dump($args); // // }); // echo $test->asyncHello("WORLD"); // $res = function($result){echo "result:";var_dump($result);}; // $test->asyncHello("WORLD", $res); $test->asyncHello("WORLD2", function($result) { echo "result: "; var_dump($result); });
<?php require_once('Hprose.php'); function hello($name) { echo "Hello $name!"; return "Hello $name!"; } function e() { throw new Exception("I am Exception"); } function ee() { require("andot"); } function asyncHello($name, $callback) { $callback("Hello async $name!"); } $server = new HproseHttpServer(); $server->setErrorTypes(E_ALL); $server->setDebugEnabled(); $server->addFunction('hello'); $server->addFunctions(array('e', 'ee')); $server->addAsyncFunction('asyncHello'); $server->addFilter(new HproseJSONRPCServiceFilter()); $server->start();
该问题是在PHP5.3上使用了PHP5.3以上才支持的语法造成的。把:
$callback("Helloasync$name!");
改为
call_user_func($callback,"Helloasync$name!");
就可以了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。