json — 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). Когда вы запрашиваете все документы, вы получаете что-то вроде этого:

{
"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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]