Установка таймаута для соединения Neo4j в php Neo4j-php-client
В прошлом мы использовали следующий код для подключения к neo:
use GraphAware\Neo4j\Client\ClientBuilder;
$neo4j = ClientBuilder::create()
-> addConnection('default', $neo_ip)
-> setDefaultTimeout($neo_timeout)
-> build();
setDefaultTimeout
устарел, время ожидания curl по умолчанию составляет 5 секунд, что недостаточно для некоторых запросов.
Вместо этого мы можем использовать болт, но setDefaultTimeout
в болтовое соединение может также устареть.
use GraphAware\Neo4j\Client\ClientBuilder;
$neo4j = ClientBuilder::create()
-> addConnection('bolt', $neo_bolt_ip)
-> setDefaultTimeout($neo_timeout)
-> build();
Новый способ установки таймаута для http-соединения выглядит следующим образом:
use GraphAware\Neo4j\Client\ClientBuilder;
use Http\Client\Curl\Client;
$options = [
CURLOPT_CONNECTTIMEOUT => 99, // The number of seconds to wait while trying to connect.
CURLOPT_SSL_VERIFYPEER => false // Stop cURL from verifying the peer's certificate
];
$httpClient = new Client(null, null, $options);
$config = \GraphAware\Neo4j\Client\HttpDriver\Configuration::create($httpClient);
$neo4j = ClientBuilder::create()
-> addConnection('default', $neo_ip, $config)
-> build();
Однако, используя этот новый способ, я получаю Unsupported Media Type
исключение.
Если у кого-то есть понимание этого, пожалуйста, поделитесь.
1 ответ
Решение
Сейчас мы можем использовать следующее для установки таймаута:
$neo_timeout = 999;
$neo_ip = "http://user:passwd@127.0.0.1:7474";
use GraphAware\Neo4j\Client\ClientBuilder;
$httpClient = \Http\Adapter\Guzzle6\Client::createWithConfig(['timeout'=>$neo_timeout]);
$config = \GraphAware\Neo4j\Client\HttpDriver\Configuration::create($httpClient);
$neo4j = ClientBuilder::create()
-> addConnection('default', $neo_ip, $config)
-> build();
исправлено использование php-http/curl-client
см.: https://github.com/graphaware/neo4j-php-client/pull/114