當前位置: 首頁>>代碼示例>>PHP>>正文


PHP MongoDBException::failedToEnsureDocumentSharding方法代碼示例

本文整理匯總了PHP中Doctrine\ODM\MongoDB\MongoDBException::failedToEnsureDocumentSharding方法的典型用法代碼示例。如果您正苦於以下問題:PHP MongoDBException::failedToEnsureDocumentSharding方法的具體用法?PHP MongoDBException::failedToEnsureDocumentSharding怎麽用?PHP MongoDBException::failedToEnsureDocumentSharding使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在Doctrine\ODM\MongoDB\MongoDBException的用法示例。


在下文中一共展示了MongoDBException::failedToEnsureDocumentSharding方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: ensureDocumentSharding

 /**
  * Ensure sharding for collection by document name.
  *
  * @param string $documentName
  * @param array  $indexOptions Options for `ensureIndex` command. It's performed on an existing collections.
  *
  * @throws MongoDBException
  */
 public function ensureDocumentSharding($documentName, array $indexOptions = array())
 {
     $class = $this->dm->getClassMetadata($documentName);
     if (!$class->isSharded()) {
         return;
     }
     $this->enableShardingForDbByDocumentName($documentName);
     do {
         $result = $this->runShardCollectionCommand($documentName);
         $done = true;
         $try = 0;
         if ($result['ok'] != 1 && isset($result['proposedKey'])) {
             $this->dm->getDocumentCollection($documentName)->ensureIndex($result['proposedKey'], $indexOptions);
             $done = false;
             $try++;
         }
     } while (!$done && $try < 2);
     if ($result['ok'] != 1 && $result['errmsg'] !== 'already sharded') {
         throw MongoDBException::failedToEnsureDocumentSharding($documentName, $result['errmsg']);
     }
 }
開發者ID:briareos,項目名稱:mongodb-odm,代碼行數:29,代碼來源:SchemaManager.php

示例2: ensureDocumentSharding

 /**
  * Ensure sharding for collection by document name.
  *
  * @param string $documentName
  * @param array  $indexOptions Options for `ensureIndex` command. It's performed on an existing collections.
  *
  * @throws MongoDBException
  */
 public function ensureDocumentSharding($documentName, array $indexOptions = array())
 {
     $class = $this->dm->getClassMetadata($documentName);
     if (!$class->isSharded()) {
         return;
     }
     $this->enableShardingForDbByDocumentName($documentName);
     $try = 0;
     do {
         $result = $this->runShardCollectionCommand($documentName);
         $done = true;
         // Need to check error message because MongoDB 3.0 does not return a code for this error
         if ($result['ok'] != 1 && strpos($result['errmsg'], 'please create an index that starts') !== false) {
             // The proposed key is not returned when using mongo-php-adapter with ext-mongodb.
             // See https://github.com/mongodb/mongo-php-driver/issues/296 for details
             if (isset($result['proposedKey'])) {
                 $key = $result['proposedKey'];
             } else {
                 $key = $this->dm->getClassMetadata($documentName)->getShardKey()['keys'];
             }
             $this->dm->getDocumentCollection($documentName)->ensureIndex($key, $indexOptions);
             $done = false;
             $try++;
         }
     } while (!$done && $try < 2);
     // Starting with MongoDB 3.2, this command returns code 20 when a collection is already sharded.
     // For older MongoDB versions, check the error message
     if ($result['ok'] == 1 || isset($result['code']) && $result['code'] == 20 || $result['errmsg'] == 'already sharded') {
         return;
     }
     throw MongoDBException::failedToEnsureDocumentSharding($documentName, $result['errmsg']);
 }
開發者ID:alcaeus,項目名稱:mongodb-odm,代碼行數:40,代碼來源:SchemaManager.php


注:本文中的Doctrine\ODM\MongoDB\MongoDBException::failedToEnsureDocumentSharding方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。