我在使用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!");
就可以了。