- PHP Client: other versions:
- Overview
- Quickstart
- Installation
- Configuration
- Inline Host Configuration
- Extended Host Configuration
- Authorization and Encryption
- Set retries
- Enabling the Logger
- Configure the HTTP Handler
- Setting the Connection Pool
- Setting the Connection Selector
- Setting the Serializer
- Setting a custom ConnectionFactory
- Set the Endpoint closure
- Building the client from a configuration hash
- Per-request configuration
- Future Mode
- Dealing with JSON Arrays and Objects in PHP
- Index Management Operations
- Indexing Documents
- Getting Documents
- Updating Documents
- Deleting documents
- Search Operations
- Namespaces
- Security
- Connection Pool
- Selectors
- Serializers
- PHP Version Requirement
- Breaking changes from 5.x
- Community DSLs
- Community Integrations
- Reference - Endpoints
- Elasticsearch\Client
- Elasticsearch\ClientBuilder
- Elasticsearch\Namespaces\CatNamespace
- Elasticsearch\Namespaces\ClusterNamespace
- Elasticsearch\Namespaces\IndicesNamespace
- Elasticsearch\Namespaces\IngestNamespace
- Elasticsearch\Namespaces\NodesNamespace
- Elasticsearch\Namespaces\RemoteNamespace
- Elasticsearch\Namespaces\SnapshotNamespace
- Elasticsearch\Namespaces\TasksNamespace
IMPORTANT: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
current release documentation.
Custom Connection Pool
editCustom Connection Pool
editIf you wish to implement your own custom Connection Pool, your class must implement ConnectionPoolInterface
:
class MyCustomConnectionPool implements ConnectionPoolInterface { /** * @param bool $force * * @return ConnectionInterface */ public function nextConnection($force = false) { // code here } /** * @return void */ public function scheduleCheck() { // code here } }
You can then instantiate an instance of your ConnectionPool and inject it into the ClientBuilder:
$myConnectionPool = new MyCustomConnectionPool(); $client = ClientBuilder::create() ->setConnectionPool($myConnectionPool, []) ->build();
If your connection pool only makes minor changes, you may consider extending AbstractConnectionPool
, which provides
some helper concrete methods. If you choose to go down this route, you need to make sure your ConnectionPool’s implementation
has a compatible constructor (since it is not defined in the interface):
class MyCustomConnectionPool extends AbstractConnectionPool implements ConnectionPoolInterface { public function __construct($connections, SelectorInterface $selector, ConnectionFactory $factory, $connectionPoolParams) { parent::__construct($connections, $selector, $factory, $connectionPoolParams); } /** * @param bool $force * * @return ConnectionInterface */ public function nextConnection($force = false) { // code here } /** * @return void */ public function scheduleCheck() { // code here } }
If your constructor matches AbstractConnectionPool, you may use either object injection or namespace instantiation:
$myConnectionPool = new MyCustomConnectionPool(); $client = ClientBuilder::create() ->setConnectionPool($myConnectionPool, []) // object injection ->setConnectionPool('/MyProject/ConnectionPools/MyCustomConnectionPool', []) // or namespace ->build();
Was this helpful?
Thank you for your feedback.