2016-06-29 14 views
0

PHP-ON-COUCHでは、php-on-couchを使用してcouchdbのすべてのレコードを取得しようとしていますが、高速ではありません。php-on-couchすべてのレコードを高速で取得する

require_once "lib/couch.php"; 
require_once "lib/couchClient.php"; 
require_once "lib/couchDocument.php";  

$couch_dsn = "http://localhost:5984/"; 
$couch_db = "couch"; 

    $client = new couchClient($couch_dsn,$couch_db); 
    $all_singers = $client->getAllDocs(); 
    foreach ($all_singers->rows as $row) { 
    $doc = $client->getDoc($id); 
    echo $doc->singer; 
    echo $doc->title; 
    echo $doc->description; 
    } 

これを正しく行う別の方法がありますか?

ありがとうございます。

答えて

0

機能が正しく使用されていません。あなたが今行っていることは、あなたがすべてのドキュメントを取得してからgetDoc()関数を使って1つずつ取得するため、極端に遅いです。ここにあなたのコードの改訂版です

{ 
    "total_rows": 0, 
    "count": 0, 
    "rows": [{ 
     "key": 1, 
     "value": "value", 
     "doc": { 
      "singer": "Foo", 
      "title": "bar" 
     } 
    }] 
} 

:あなたはすべてのドキュメントを照会するとき、あなたはこのような何かを得る

<?php 

require_once "lib/couch.php"; 
require_once "lib/couchClient.php"; 
require_once "lib/couchDocument.php"; 

$couch_dsn = "http://localhost:5984/"; 
$couch_db = "couch"; 

$client = new couchClient($couch_dsn, $couch_db); 
$all_singers = null; 

try { 
    $all_singers = $client->include_docs(true)->getAllDocs(); 
} catch (Exception $e) { 
    //Handle the exception here. 
} 
if (!isset($all_singers) || !isset($all_singers->rows)) 
    echo "No singers found"; 
else 
    foreach ($all_singers->rows as $row) { 
     if (isset($row->error)) 
      continue; //Log the error or something like this 
     if (isset($row->doc)) { 
      $doc = $row->doc; 
      echo $doc->singer; 
      echo $doc->title; 
      echo $doc->description; 
     } 
    } 
+0

おかげアレクシスが、それは正常に動作しています!クラスcouchClientのメソッドgetAllDocsにパラメータ "include_docs"を追加するだけです。 –

+0

私はそれを変更しました。それがあなたを助けたら答えを受け入れてください! :) –

関連する問題