首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
一键协程化Co::set(['hook_flags'=> SWOOLE_HOOK_ALL]) 对 elasticsearch 的官方 PHP 客户端无效
### 问题描述 ### Swoole版本,PHP版本,以及操作系统版本信息 4.5.18 ### 相关代码 index.php ```php <?php require 'vendor/autoload.php'; use Elasticsearch\ClientBuilder; $_server = new Swoole\Http\Server('127.0.0.1', 8080); Co::set(['hook_flags'=> SWOOLE_HOOK_ALL]); $_server->set([ 'reactor_num' => 1, 'worker_num' => 1, ]); $_server->on('Request', function ($request, $response) { $uri = $request->server['request_uri']; if ($uri == '/abc') { return $response->end("<h1>hello swoole</h1>"); } $client = ClientBuilder::create()->setHosts(['127.0.0.1:3304'])->build(); $client->search(['index' => 'aaaaa', 'body' => ['anc' => 111]]); }); $_server->start(); ``` composer.json ``` { "require": { "elasticsearch/elasticsearch": "^7.9" } } ``` nc 监听 3304 端口, 伪装成 elasticsearch, 以此模拟耗时长的 es 请求 ``` nc -l -p 3304 ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 先发出请求: curl http://127.0.0.1:8080/a 后发出请求: curl http://127.0.0.1:8080/abc 期待看到后发出的请求立马有回包 hello world, 同时第一个请求依然在阻塞. 然而看到了两个请求都在无限阻塞无回包
发布于4年前 · 27 次浏览 · 来自
提问
kongkongye
### 问题描述 ### Swoole版本,PHP版本,以及操作系统版本信息 4.5.18 ### 相关代码 index.php ```php <?php require 'vendor/autoload.php'; use Elasticsearch\ClientBuilder; $_server = new Swoole\Http\Server('127.0.0.1', 8080); Co::set(['hook_flags'=> SWOOLE_HOOK_ALL]); $_server->set([ 'reactor_num' => 1, 'worker_num' => 1, ]); $_server->on('Request', function ($request, $response) { $uri = $request->server['request_uri']; if ($uri == '/abc') { return $response->end("<h1>hello swoole</h1>"); } $client = ClientBuilder::create()->setHosts(['127.0.0.1:3304'])->build(); $client->search(['index' => 'aaaaa', 'body' => ['anc' => 111]]); }); $_server->start(); ``` composer.json ``` { "require": { "elasticsearch/elasticsearch": "^7.9" } } ``` nc 监听 3304 端口, 伪装成 elasticsearch, 以此模拟耗时长的 es 请求 ``` nc -l -p 3304 ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 先发出请求: curl http://127.0.0.1:8080/a 后发出请求: curl http://127.0.0.1:8080/abc 期待看到后发出的请求立马有回包 hello world, 同时第一个请求依然在阻塞. 然而看到了两个请求都在无限阻塞无回包
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2020-09-28
宇润
更新到 Swoole v4.5.4 版本,该版本的 Hook All 包含了 Curl,之前的版本没有包含。 另外也可以使用Guzzle-Swoole:<https://github.com/Yurunsoft/Guzzle-Swoole> 可以让 Guzzle 支持协程,同时也支持 ElasticSearch Client 协程化
赞
1
回复
2020-09-28
kongkongye
版本号写错了, 是4.5.1
赞
0
回复
微信公众号
热门内容
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。