source: cpc/trunk/project/lib/task/indexSolrTask.class.php @ 1336

Last change on this file since 1336 was 1336, checked in by teymour, 11 years ago

Ajout d'un option qui permet de supprimer la base Solr

File size: 1.8 KB
Line 
1<?php
2
3class indexSolrTask extends sfBaseTask
4{
5  private $file_conf;
6 
7  private function writeState() 
8  {
9    $fh = fopen($this->file_conf, 'w');
10    fwrite($fh, serialize($this->state));
11    fclose($fh);
12  }
13
14  protected function configure()
15  {
16    $this->namespace = 'index';
17    $this->name = 'Solr';
18    $this->briefDescription = 'Index db value on solr';
19    $this->addOption('env', null, sfCommandOption::PARAMETER_OPTIONAL, 'Changes the environment this task is run in', 'test');
20    $this->addOption('app', null, sfCommandOption::PARAMETER_OPTIONAL, 'Changes the environment this task is run in', 'frontend');
21    $this->addOption('removeAll', null, sfCommandOption::PARAMETER_OPTIONAL, 'Drop solr database (=no|yes no default)', 'no');
22
23    $this->file_conf = sys_get_temp_dir().DIRECTORY_SEPARATOR."reindex_slor.db";
24    $this->state = array();
25    if (file_exists($this->file_conf)) {
26      $this->state = unserialize(file_get_contents($this->file_conf));
27    }
28  }
29 
30  protected function execute($arguments = array(), $options = array())
31  {
32    $dir = dirname(__FILE__).'/../../batch/commission/out/';
33    $manager = new sfDatabaseManager($this->configuration);   
34
35    $solr = new SolrConnector();
36
37    if ($options['removeAll'] == 'yes') {
38      $solr->deleteAll();
39    }
40
41    foreach(array("Parlementaire", "Commentaire", "QuestionEcrite", "Amendement", "Intervention") as $table) {
42      while (1) {
43        $q = Doctrine::getTable($table)
44          ->createQuery('o')
45          ->orderBy('o.id ASC');
46        if ($this->state[$table]) {
47          $q->where('o.id > ?', $this->state[$table]);
48        }
49        $q->limit(100);
50        if (!$q->count()) {
51          echo "Count DONE\n";
52          break;
53        }
54       
55        foreach($q->execute() as $o) {
56          echo get_class($o).' '.$o->id."\n";
57          $o->Save();
58          $this->state[$table] = $o->id;
59        }
60        $solr->updateFromCommands();
61        $this->writeState();
62      }
63    }
64    unlink($this->file_conf);
65  }
66 
67}
Note: See TracBrowser for help on using the repository browser.