这种架构下,这样的优化策略能实现吗?能有作用吗?
php 服务端请求 ES tcp server 部分代码
$streamClient = stream_socket_client("tcp://{$tcpHost}:{$tcpPort}", $errno, $errstr);
// 该数组是所有业务线的分类结构,及每条业务线要搜索的关键字,单个元素对应一条业务线
$categoriesFilter = [];
foreach ($categoriesFilter as $categoryFilter) {
fwrite($streamClient, json_encode($categoryFilter);
}
然后我就不知道该如何实现写的同时接收数据了。并保证每条业务线的数据都发送了,也收到响应了。
ES tcp server 部分代码
$searchServer = new \swoole_server('0.0.0.0', 9501);
$searchServer->on('connect', function (\Swoole\Server $server, $fd) {
dump($server->connection_info($fd));
});
$searchServer->on('receive', function (\Swoole\Server $server, $fd, $reactor_id, $request) {
global $keyword;
global $elastic;
$requestArray = json_decode($request, true);
$keyword = $requestArray;
// es 搜索代码
$result = $elastic->indexFilterAndSearch($requestArray);
$server->send($fd, json_encode($result));
});
$searchServer->on('WorkerStart', function (\Swoole\Server $server, $work_id) {
global $elastic;
$elastic = new ElasticSearch;
});
$searchServer->on('close', function (\Swoole\Server $server, $fd, $reactorId) {
global $keyword;
$clientConnectionInfo = $server->connection_info($fd);
file_put_contents('swoole_log.log', json_encode([
'connectionTime' => date('Y-m-d H:i:s', $clientConnectionInfo['connect_time']),
'closeTime' => date('Y-m-d H:i:s'),
'keyword' => $keyword,
'ip' => $clientConnectionInfo['remote_ip']
]) . PHP_EOL, FILE_APPEND);
});
$searchServer->start();
求各位大佬指点一下,这样优化行不行?如果行的话,我上面的两个问题该从那方面,那里入手解决啊。。。