Changeset 82417 in spip-zone


Ignore:
Timestamp:
May 15, 2014, 3:13:03 PM (5 years ago)
Author:
marcimat@…
Message:

On continue l'indexation des articles en permettant de reprendre là où en en était

Location:
_plugins_/indexer/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/indexer/trunk/Sources/Articles.php

    r82389 r82417  
    2626            '', // Gr By
    2727            '', // Or By
    28             '1000' // Limit
     28            '' // Limit
    2929        );
    3030
  • _plugins_/indexer/trunk/Sources/SpipDocuments.php

    r82389 r82417  
    2727                return crc32($GLOBALS['meta']['adresse_site'] . $objet) + intval($id_objet);
    2828        }
    29        
     29
    3030    public function getAuthorsProperties($objet, $id_objet) {
    3131        if ($this->tables_liens) {
     
    7676        $parts = [];
    7777        for ($i = $bornes['min']; $i <= $bornes['max']; $i += $count) {
    78             $parts[$i] = $i + $count;
     78            $parts[] = [
     79                'start' => $i,
     80                'end'   => $i + $count
     81            ];
    7982        }
    8083        return $parts;
  • _plugins_/indexer/trunk/Sources/SpipSourcesIndexer.php

    r82390 r82417  
    2929
    3030
     31    public function setTablesLiensAuto() {
     32        include_spip('inc/plugin');
     33        $liens = spip_version_compare($GLOBALS['spip_version_branche'], '3.0', '>=');
     34        $this->setTablesLiens($liens);
     35    }
     36
    3137    public function setTablesLiens($bool) {
    3238        $this->tables_liens = (bool)$bool;
     
    5864        include_spip('inc/config');
    5965        $data = lire_config('indexer/indexing/last', []);
    60         if (!is_array($data)) $data = [];
     66        if (!is_array($data)) {
     67            $data = [];
     68        }
    6169        return $data + [
    6270            'source' => 0,
     
    6876    public function saveIndexesInfos($data) {
    6977        include_spip('inc/config');
    70         return ecrire_config('indexer/indexing/last', $data);
     78        ecrire_config('indexer/indexing/last', $data);
     79    }
     80
     81    public function resetIndexesInfos() {
     82        include_spip('inc/config');
     83        effacer_config('indexer/indexing/last');
    7184    }
    7285
     
    8093
    8194        $infos = $this->loadIndexesInfos();
     95        $this->resetIndexesInfos();
    8296
    8397        echo "<h1>Indexer tous les contenus :</h1>\n";
    8498        echo "\n<pre>"; print_r($infos); echo "</pre>\n";
    8599
     100        $sources = $this->sources->getIterator();
     101        if ($infos['sources']) {
     102            $sources->seek($infos['sources']);
     103        }
    86104
    87         foreach ($this->sources as $key => $source) {
     105        while ($sources->valid()) {
     106            $key    = $sources->key();
     107            $source = $sources->current();
    88108
    89             $source->setTablesLiens(false); // pour SPIP 2.1
     109
     110            $source->setTablesLiens($this->tables_liens); // pour SPIP 2.1
    90111            echo "<h2>Analyse de $source :</h2>\n";
    91112            spip_timer('source');
    92113
    93             foreach ($source->getParts(1000) as $start => $end) {
     114            $parts = new \ArrayIterator($source->getParts(1000));
     115            if ($infos['start']) {
     116                $parts->seek($infos['start']);
     117            }
    94118
    95                 $documents = $source->getAllDocuments($start, $end);
     119            while ($parts->valid()) {
     120                $part = $parts->current();
     121
     122                $documents = $source->getAllDocuments($part['start'], $part['end']);
    96123
    97124                if (count($documents)) {
     
    100127
    101128                    echo "<br /><strong>Temps pour indexer " . count($documents). "</strong>\n";
    102                     echo "<br /><i>ids entre $start et $end :</i><br />\n";
     129                    echo "<br /><i>ids entre $part[start] et $part[end] :</i><br />\n";
    103130                    echo spip_timer('indexage');
    104131                }
     
    110137                        'sourceClass' => (string)$source,
    111138                        'sourceTime'  => spip_timer('source'),
    112                         'start' => $start,
     139                        'start' => $parts->key(),
    113140                    ]);
    114141                    return false;
    115142                }
     143
     144                $parts->next();
    116145            }
    117 
    118146
    119147
     
    128156                    'sourceClass' => (string)$source,
    129157                    'sourceTime'  => $t,
    130                     'start' => $start,
     158                    'start' => 0,
    131159                ]);
    132160                return false;
    133161            }
    134162
     163
     164            $sources->next();
    135165        }
    136166
     167
     168
     169        $this->resetIndexesInfos();
    137170        return true;
    138171    }
  • _plugins_/indexer/trunk/prive/squelettes/contenu/indexer.html

    r82389 r82417  
    1717
    1818$SpipSourcesIndexer = new Spip\Indexer\Sources\SpipSourcesIndexer($indexer, $sources);
    19 $SpipSourcesIndexer->setTablesLiens(false); // moche (pour spip 2.1 uniquement)
     19$SpipSourcesIndexer->setTablesLiensAuto();
    2020
    2121$res = $SpipSourcesIndexer->indexAll();
    2222
    23 var_dump($res);
     23if (!$res) {
     24    echo "\n<br/><a href='#SELF'>Recharger la page pour continuer l'indexation</a>";
     25}
    2426
Note: See TracChangeset for help on using the changeset viewer.