Beispiel #1
0
 /**
  * Get whether secondary read queries are allowed for this collection.
  *
  * This method wraps getSlaveOkay() for driver versions before 1.3.0. For
  * newer drivers, this method considers any read preference other than
  * PRIMARY as a true "slaveOkay" value.
  */
 public function getSlaveOkay()
 {
     if (version_compare(phpversion('mongo'), '1.3.0', '<')) {
         return $this->getMongoCollection()->getSlaveOkay();
     }
     $readPref = $this->getMongoCollection()->getReadPreference();
     if (is_numeric($readPref['type'])) {
         $readPref['type'] = ReadPreference::convertNumericType($readPref['type']);
     }
     return \MongoClient::RP_PRIMARY !== $readPref['type'];
 }
Beispiel #2
0
 /**
  * @dataProvider provideTagSetsAcceptedBySetReadPreference
  */
 public function testConvertTagSetsShouldNotAlterTagSetsAcceptedBySetReadPreference($tagSet)
 {
     $this->assertEquals($tagSet, ReadPreference::convertTagSets($tagSet));
 }
Beispiel #3
0
 /**
  * Set whether secondary read queries are allowed for this cursor.
  *
  * This method wraps setSlaveOkay() for driver versions before 1.3.0. For
  * newer drivers, this method either wraps setReadPreference() method and
  * specifies SECONDARY_PREFERRED or does nothing, depending on whether
  * setReadPreference() exists.
  *
  * @param boolean $ok
  */
 public function setMongoCursorSlaveOkay($ok)
 {
     if (version_compare(phpversion('mongo'), '1.3.0', '<')) {
         $this->mongoCursor->slaveOkay($ok);
         return;
     }
     /* MongoCursor::setReadPreference() may not exist until 1.4.0. Although
      * we could throw an exception here, it's more user-friendly to NOP.
      */
     if (!method_exists($this->mongoCursor, 'setReadPreference')) {
         return;
     }
     if ($ok) {
         // Preserve existing tags for non-primary read preferences
         $readPref = $this->mongoCursor->getReadPreference();
         $tags = !empty($readPref['tagsets']) ? ReadPreference::convertTagSets($readPref['tagsets']) : array();
         $this->mongoCursor->setReadPreference(\MongoClient::RP_SECONDARY_PREFERRED, $tags);
     } else {
         $this->mongoCursor->setReadPreference(\MongoClient::RP_PRIMARY);
     }
 }
Beispiel #4
0
 /**
  * Wrapper method for MongoCollection::getReadPreference().
  *
  * For driver versions between 1.3.0 and 1.3.3, the return value will be
  * converted for consistency with {@link Collection::setReadPreference()}.
  *
  * @see http://php.net/manual/en/mongocollection.getreadpreference.php
  * @return array
  */
 public function getReadPreference()
 {
     return ReadPreference::convertReadPreference($this->mongoCollection->getReadPreference());
 }
Beispiel #5
0
 /**
  * Wrapper method for MongoClient::getReadPreference().
  *
  * For driver versions between 1.3.0 and 1.3.3, the return value will be
  * converted for consistency with {@link Connection::setReadPreference()}.
  *
  * @see http://php.net/manual/en/mongoclient.getreadpreference.php
  * @return array
  */
 public function getReadPreference()
 {
     $this->initialize();
     return ReadPreference::convertReadPreference($this->mongoClient->getReadPreference());
 }