Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $cb = new Couchbase(array(getenv('PH_CB_HOST')), getenv('PH_CB_USER'), getenv('PH_CB_PASSWORD'), getenv('PH_CB_DB'), true);
- $testUsuario = "test_channel";
- $consDocs = $cb->view("dev_test_andr.ddoc","por_canal",array("key"=>$testUsuario, "full_set"=>true));
- // "por_canal" emits document id based on specific channels
- echo "Compactando documentos para Canal: {$testUsuario}\n\n";
- $i = 0;
- mkdir($testUsuario);
- foreach($consDocs['rows'] as $datoFila){
- $doc = $cb->get($datoFila['id']);
- // This backups the document prior to compaction
- file_put_contents($testUsuario . "/" . $datoFila['id'].".txt", $doc);
- compactarDoc($datoFila['id'], $cb);
- $i++;
- if(count($consDocs['rows']) > 0)
- $compl = number_format(($i / count($consDocs['rows'])) * 100, 0);
- else $compl = 0;
- echo "\rCompletado: {$i} ({$compl} %)";
- }
- echo "\n";
- function compactarDoc($docId, $cb){
- $obj = json_decode($cb->get($docId));
- $rev_test = $obj->_sync->rev;
- $_tmp_revs = array();
- $_tmp_parents = array();
- $_tmp_bodies = array();
- $_tmp_pre_deleted = array();
- $_tmp_deleted = array();
- $_tmp_channels = array();
- $_tmp_raw_revs = array();
- foreach($obj->_sync->history->revs as $id_rev => $_nrev){
- $_tmp_raw_revs[] = $_nrev;
- if(isset($obj->_sync->history->deleted) && in_array($id_rev, $obj->_sync->history->deleted))
- $_tmp_pre_deleted[$_nrev] = 0;
- }
- usort($_tmp_raw_revs, function($a, $b){
- $tmpa = explode("-", $a);
- $tmpb = explode("-", $b);
- return (intval($tmpa[0]) < intval($tmpb[0]))? 1: -1;
- });
- $tmpArr = array_reverse(array_slice($_tmp_raw_revs, 0, 20));
- for($i = 0; $i < count($tmpArr); $i++){
- $_tmp_revs[$i] = $tmpArr[$i];
- $_tmp_parents[$i] = $i - 1;
- $_tmp_bodies[$i] = "";
- if(isset($_tmp_pre_deleted[$tmpArr[$i]]))
- $_tmp_deleted[] = $i;
- }
- $_tmp_channels = array_slice($obj->_sync->history->channels, 0, count($tmpArr));
- $obj->_sync->history->revs = $_tmp_revs;
- $obj->_sync->history->parents = $_tmp_parents;
- $obj->_sync->history->bodies = $_tmp_bodies;
- $obj->_sync->history->deleted = $_tmp_deleted;
- $obj->_sync->history->channels = $_tmp_channels;
- $cb->set($docId, json_encode($obj));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement