Comments (14)
你先打开 yar.debug 看看是否请求正常发送, 看看是否server正常返回了.
from yar.
在php.ini中添加yar.debug=1, 然后观察error log, 记得要打开全部错误显示
from yar.
打开了,同步调用的服务器返回了
通过Yar_Concurrent_Client::call调用的没有返回。可能是连接超时。
同样的代码在centos上执行没有问题。
以下是代码:
server:
class APIS {
/**
* the doc info will be generated automatically into service info page.
* @params
* @return
*/
public function api($parameter, $option = "foo") {
return $parameter.' haha '.$option;
}
public function method1() {
return 'hellod';
}
protected function client_can_not_see() {
}
}
$service = new Yar_Server(new APIS());
$service->handle();
client 调用:
// 同步调用
$client = new Yar_Client('http://loc.yarserver.com');
$result = $client->api('ff');
echo "Result Begin:\n";
echo $result;
echo "\nResult End\n\n";
// 异步调用
function callback1($retval, $callinfo) {
echo 'callback';
}
function endCall() {
echo "End\n";
}
function error_callback($type, $error, $callinfo) {
echo "ErrorCallBack\n";
var_dump($error);
}
Yar_Concurrent_Client::call("http://loc.yarserver.com/", "api", array('parad', 'fdsf'), 'callback1', 'error_callback',array(YAR_OPT_TIMEOUT=>10, YAR_OPT_CONNECT_TIMEOUT=>7));
Yar_Concurrent_Client::loop('endCall', 'error_callback');
日志:
PHP Warning: [Debug Yar_Client 11:31:55.685710]: 489336978: call api 'api' at (r)'http://loc.yarserver.com' with '1' parameters in /opt/Workspace/yar_server/yartest.php on line 6
PHP Stack trace:
PHP 1. {main}() /opt/Workspace/yar_server/yartest.php:0
PHP 2. Yar_Client->api() /opt/Workspace/yar_server/yartest.php:6
Warning: [Debug Yar_Client 11:31:55.685710]: 489336978: call api 'api' at (r)'http://loc.yarserver.com' with '1' parameters in /opt/Workspace/yar_server/yartest.php on line 6
Call Stack:
0.0003 230040 1. {main}() /opt/Workspace/yar_server/yartest.php:0
0.0004 231184 2. Yar_Client->api() /opt/Workspace/yar_server/yartest.php:6
PHP Warning: [Debug Yar_Client 11:31:55.8316866957937375174]: 489336978: pack request by 'PHP', result len '79', content: 'a:3:{s:1:"i";i:489336978;s:1:"m"' in /opt/Workspace/yar_server/yartest.php on line 6
PHP Stack trace:
PHP 1. {main}() /opt/Workspace/yar_server/yartest.php:0
PHP 2. Yar_Client->api() /opt/Workspace/yar_server/yartest.php:6
Warning: [Debug Yar_Client 11:31:55.8316866957937375174]: 489336978: pack request by 'PHP', result len '79', content: 'a:3:{s:1:"i";i:489336978;s:1:"m"' in /opt/Workspace/yar_server/yartest.php on line 6
Call Stack:
0.0003 230040 1. {main}() /opt/Workspace/yar_server/yartest.php:0
0.0004 231184 2. Yar_Client->api() /opt/Workspace/yar_server/yartest.php:6
PHP Warning: [Debug Yar_Client 11:31:55.688648]: 489336978: server response content packaged by 'PHP', len '88', content 'a:4:{s:1:"i";i:489336978;s:1:"s"' in /opt/Workspace/yar_server/yartest.php on line 6
PHP Stack trace:
PHP 1. {main}() /opt/Workspace/yar_server/yartest.php:0
PHP 2. Yar_Client->api() /opt/Workspace/yar_server/yartest.php:6
Warning: [Debug Yar_Client 11:31:55.688648]: 489336978: server response content packaged by 'PHP', len '88', content 'a:4:{s:1:"i";i:489336978;s:1:"s"' in /opt/Workspace/yar_server/yartest.php on line 6
Call Stack:
0.0003 230040 1. {main}() /opt/Workspace/yar_server/yartest.php:0
0.0004 231184 2. Yar_Client->api() /opt/Workspace/yar_server/yartest.php:6
Result Begin:
ff haha foo
Result End
PHP Warning: [Debug Yar_Client 11:31:55.4295656282]: 1331227697: call api 'api' at (r)'http://loc.yarserver.com/' with '2' parameters in /opt/Workspace/yar_server/yartest.php on line 29
PHP Stack trace:
PHP 1. {main}() /opt/Workspace/yar_server/yartest.php:0
PHP 2. Yar_Concurrent_Client::loop() /opt/Workspace/yar_server/yartest.php:29
Warning: [Debug Yar_Client 11:31:55.4295656282]: 1331227697: call api 'api' at (r)'http://loc.yarserver.com/' with '2' parameters in /opt/Workspace/yar_server/yartest.php on line 29
Call Stack:
0.0003 230040 1. {main}() /opt/Workspace/yar_server/yartest.php:0
0.0037 233216 2. Yar_Concurrent_Client::loop() /opt/Workspace/yar_server/yartest.php:29
PHP Warning: [Debug Yar_Client 11:31:55.689049]: 1331227697: pack request by 'PHP', result len '98', content: 'a:3:{s:1:"i";i:1331227697;s:1:"m' in /opt/Workspace/yar_server/yartest.php on line 29
PHP Stack trace:
PHP 1. {main}() /opt/Workspace/yar_server/yartest.php:0
PHP 2. Yar_Concurrent_Client::loop() /opt/Workspace/yar_server/yartest.php:29
Warning: [Debug Yar_Client 11:31:55.689049]: 1331227697: pack request by 'PHP', result len '98', content: 'a:3:{s:1:"i";i:1331227697;s:1:"m' in /opt/Workspace/yar_server/yartest.php on line 29
Call Stack:
0.0003 230040 1. {main}() /opt/Workspace/yar_server/yartest.php:0
0.0037 233216 2. Yar_Concurrent_Client::loop() /opt/Workspace/yar_server/yartest.php:29
End
PHP Warning: Yar_Concurrent_Client::loop(): select timeout '5' seconds reached in /opt/Workspace/yar_server/yartest.php on line 29
PHP Stack trace:
PHP 1. {main}() /opt/Workspace/yar_server/yartest.php:0
PHP 2. Yar_Concurrent_Client::loop() /opt/Workspace/yar_server/yartest.php:29
Warning: Yar_Concurrent_Client::loop(): select timeout '5' seconds reached in /opt/Workspace/yar_server/yartest.php on line 29
Call Stack:
0.0003 230040 1. {main}() /opt/Workspace/yar_server/yartest.php:0
0.0037 233216 2. Yar_Concurrent_Client::loop() /opt/Workspace/yar_server/yartest.php:29
from yar.
Server没收到请求....
from yar.
我看了apache的访问日志,Yar_Client发出来的请求能到达,Yar_Concurrent_Client发请求根本就没到达,没有访问日志。
那应该是Yar_Concurrent_Client 的请求没成功发出去。
和mac系统有关系吗?
from yar.
哦, 你是mac啊, 可能和libcul有关, 你看看你的curl, 是不是这个版本:
cURL Information => 7.24.0
这个版本貌似有问题, 你升级一下, 换成7.32.0
from yar.
cURL Information => 7.30.0
不知道这个版本有没有问题。
from yar.
你能否试试换成7.32.0是否还有这个问题呢?
from yar.
我安装curl 7.32.0 并且明确地在安装php 的时候 --with-curl = 7.32.0所在目录之后。
php info 里cUrl Info 还是7.30.0.
不过,问题总算解决了,Yar_Concurrent_Client在mac上也能正常工作了,谢谢鸟哥!
from yar.
那就是Mac自带的有问题了....
from yar.
@crazyant 怎么解决的
from yar.
@zxcvdavid 的解决过程比较曲折。
- 用brew装了curl 7.32.0,目前直接 brew install curl 就是最新的。
- 手动编译安装了一个新的php,我装的php5.4.20,配置的时候 --with-apxs=/usr/sbin/apxs --with-curl=/usr/local/Cellar/curl/7.32.0/
- 安装成功后,系统的apache 加载的已经是新版本的php了,但有个问题,cUrl Information 还是老版本的。自命令行直接执行新版本phpinfo(), cUrl Information. 是7.32.0。折腾了许久之后终于找到了问题所在:httpd 加载 php 的时候,链接的libcurl的动态库来自 /usr/lib/libcurl.4.dylib,cli 模式下的来自 /usr/local/Cellar/curl/7.32.0/lib/libcurl.4.dylib,于是我 ln -s /usr/local/Cellar/curl/7.32.0/lib/libcurl.4.dylib /usr/lib/libcurl.4.dylib ,然后就好了。
from yar.
感谢分享, 赞一个!
from yar.
同样是mac 我是在执行loop的时候 fd 问题. 同样升级了 curl 然后 按照 crazyant的方法 链接了 新的lib文件. 这样就好了... 没用重新编译
from yar.
Related Issues (20)
- Header头Hostname传递非法字符串导致Go-Yar服务返回400错误 HOT 2
- yar扩展无法在基于swoole环境的框架中使用 HOT 5
- 自定义异常包含析构函数无法正常在client捕捉 HOT 1
- $callinfo的属性具体有哪些? HOT 1
- 客户端调用服务端,500错误,请看日志 HOT 3
- 服务端地址页面底部 多出来的信息是哪里来的? HOT 2
- yar 502 HOT 2
- rpc server请求连接池 和 权重动态调整 如何实现? HOT 2
- header中的provider和token可否自定义 HOT 1
- php8兼容性问题 HOT 1
- Wrong link to source code in PECL website HOT 1
- yar.go中调用yar报错need specifical request method HOT 3
- http2.0协议支持
- mac book pro M1 is not working properly HOT 2
- need specifical request method HOT 2
- tests/047.phpt erratic results HOT 4
- yar 400 HOT 1
- Yar Server页面无法正常展示 HOT 3
- 服务端如何捕获异常?有没有统一的办法?
- Yar 远程调用用的什么协议?如果我用curl形式请求,格式应该是怎样的? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from yar.