source: cpc/trunk/project/lib/model/solr/SolrCommands.class.php @ 1366

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

Intégration de TextLoi? dans Solr

File size: 1.5 KB
Line 
1<?php
2
3class SolrCommands 
4{
5  public static function getFileCommands() {
6    return sfConfig::get('sf_log_dir').'/solr/commands.log';
7  }
8
9  protected $semaphore = null;
10  protected $file = null; 
11
12  protected static $instance = null;
13  protected static $semaphore_id = "99999910823498202340982340982340981678";
14  public static function getInstance() {
15    if (!self::$instance) {
16      self::$instance = new SolrCommands();
17    }
18    return self::$instance;
19  }
20
21  public function __construct() {
22    $this->semaphore = sem_get(self::$semaphore_id);
23  }
24
25  public function __destruct() {
26    sem_remove($this->semaphore);
27    $this->semaphore = null;
28  }
29
30  public function addCommand($status, $json) {
31    sem_acquire($this->semaphore);
32    if (! $this->file) {
33      $this->file = fopen($this->getFileCommands(), 'a+');
34    }
35    $str = $status.' : '.json_encode($json)."\n";
36    fwrite($this->file, $str, strlen($str));
37    sem_release($this->semaphore);
38  }
39
40  public  function getCommandContent() {
41    $lockfile = $this->getFileCommands().'.lock';
42    if (file_exists($lockfile)) {
43      return $lockfile;
44    }
45    sem_acquire($this->semaphore);
46    if ($this->file) {
47      fclose($this->file);
48      $this->file = null;
49    }
50    rename($this->getFileCommands(), $lockfile);
51    sem_release($this->semaphore);
52    return $lockfile;
53  }
54  public  function releaseCommandContent() {
55    sem_acquire($this->semaphore);
56    unlink($this->getFileCommands().'.lock');
57    sem_release($this->semaphore);
58  }
59}
60
Note: See TracBrowser for help on using the repository browser.