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

Last change on this file since 1274 was 1274, checked in by roux, 11 years ago

doctrine au lieu de Doctrine ne semble plus marcher sous linux avec la 1.4

File size: 1.6 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
22    $this->file_conf = sys_get_temp_dir().DIRECTORY_SEPARATOR."reindex_slor.db";
23    $this->state = array();
24    if (file_exists($this->file_conf)) {
25      $this->state = unserialize(file_get_contents($this->file_conf));
26    }
27  }
28 
29  protected function execute($arguments = array(), $options = array())
30  {
31    $dir = dirname(__FILE__).'/../../batch/commission/out/';
32    $manager = new sfDatabaseManager($this->configuration);   
33
34    $solr = new SolrConnector();
35
36
37    foreach(array("Parlementaire", "QuestionEcrite", "Amendement", "Intervention") as $table) {
38      while (1) {
39        $q = Doctrine::getTable($table)
40          ->createQuery('o')
41          ->orderBy('o.id ASC');
42        if ($this->state[$table]) {
43          $q->where('o.id > ?', $this->state[$table]);
44        }
45        $q->limit(100);
46        if (!$q->count()) {
47          echo "Count DONE\n";
48          break;
49        }
50       
51        foreach($q->execute() as $o) {
52          echo get_class($o).' '.$o->id."\n";
53          $o->Save();
54          $this->state[$table] = $o->id;
55        }
56        $this->writeState();
57      }
58    }
59  }
60}
Note: See TracBrowser for help on using the repository browser.