/** * {@inheritdoc} */ public function execute(IConnection $connection, &$commands) { $sizeofPipe = count($commands); $values = array(); foreach ($commands as $command) { try { $connection->writeCommand($command); } catch (CommunicationException $exception) { return array_fill(0, $sizeofPipe, $exception); } } for ($i = 0; $i < $sizeofPipe; $i++) { $command = $commands[$i]; unset($commands[$i]); try { $response = $connection->readResponse($command); $values[] = $response instanceof \Iterator ? iterator_to_array($response) : $response; } catch (ServerException $exception) { $values[] = $exception->toResponseError(); } catch (CommunicationException $exception) { $toAdd = count($commands) - count($values); $values = array_merge($values, array_fill(0, $toAdd, $exception)); break; } } return $values; }
/** * {@inheritdoc} */ public function execute(IConnection $connection, &$commands) { foreach ($commands as $command) { $connection->writeCommand($command); } $connection->disconnect(); return array(); }
/** * {@inheritdoc} */ public function execute(IConnection $connection, &$commands) { $sizeofPipe = count($commands); $values = array(); foreach ($commands as $command) { $connection->writeCommand($command); } try { for ($i = 0; $i < $sizeofPipe; $i++) { $response = $connection->readResponse($commands[$i]); $values[] = $response instanceof \Iterator ? iterator_to_array($response) : $response; unset($commands[$i]); } } catch (ServerException $exception) { // Force disconnection to prevent protocol desynchronization. $connection->disconnect(); throw $exception; } return $values; }
/** * {@inheritdoc} */ public function execute(IConnection $connection, &$commands) { $connectionExceptions = array(); $sizeofPipe = count($commands); $values = array(); foreach ($commands as $command) { $cmdConnection = $connection->getConnection($command); if (isset($connectionExceptions[spl_object_hash($cmdConnection)])) { continue; } try { $cmdConnection->writeCommand($command); } catch (CommunicationException $exception) { $connectionExceptions[spl_object_hash($cmdConnection)] = $exception; } } for ($i = 0; $i < $sizeofPipe; $i++) { $command = $commands[$i]; unset($commands[$i]); $cmdConnection = $connection->getConnection($command); $connectionObjectHash = spl_object_hash($cmdConnection); if (isset($connectionExceptions[$connectionObjectHash])) { $values[] = $connectionExceptions[$connectionObjectHash]; continue; } try { $response = $cmdConnection->readResponse($command); $values[] = $response instanceof \Iterator ? iterator_to_array($response) : $response; } catch (ServerException $exception) { $values[] = $exception->toResponseError(); } catch (CommunicationException $exception) { $values[] = $exception; $connectionExceptions[$connectionObjectHash] = $exception; } } return $values; }
/** * Allows the pipeline executor to perform operations on the * connection before starting to execute the commands stored * in the pipeline. * * @param IConnection Connection instance. */ protected function checkConnection(IConnection $connection) { if ($connection instanceof IConnectionReplication) { $connection->switchTo('master'); } }