Hprose server端使用addAsyncFunction回调报错
我在使用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();
Function name must be a string (/Library/WebServer/Documents/hprose/http_server.php:14)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
该问题是在 PHP 5.3 上使用了 PHP 5.3 以上才支持的语法造成的。把:
$callback("Hello async $name!");
改为
call_user_func($callback, "Hello async $name!");
就可以了。