/[openfoncier]/branches/3.14.x/app/update_da.php
ViewVC logotype

Diff of /branches/3.14.x/app/update_da.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3110 by nhaye, Thu Jul 31 16:49:42 2014 UTC revision 3121 by nhaye, Thu Aug 7 08:27:01 2014 UTC
# Line 5  Line 5 
5   * @package openfoncier   * @package openfoncier
6   * @version SVN : $Id$   * @version SVN : $Id$
7   */   */
8    ini_set('max_execution_time', 86400);
9  $time_start = microtime(true);  $time_start = microtime(true);
   
10  //  //
11  require_once "../obj/utils.class.php";  require_once "../obj/utils.class.php";
12  $f = new utils("nohtml", null, _("Calcul des dossiers d'autorisation en base"));  $f = new utils("nohtml", null, _("Calcul des dossiers d'autorisation en base"));
13  $f->db->autoCommit(false);  ob_start();
14  $sql_da = "SELECT dossier_autorisation FROM ".DB_PREFIXE."dossier_autorisation";  $sql_di_sans_dt = "SELECT dossier, dossier.dossier_autorisation FROM ".DB_PREFIXE."dossier
15  $res_da = $f->db->query($sql_da);      LEFT OUTER JOIN ".DB_PREFIXE."donnees_techniques ON dossier.dossier=donnees_techniques.dossier_instruction
16        WHERE donnees_techniques.donnees_techniques IS NULL";
17    $res_di_sans_dt = $f->db->query($sql_di_sans_dt);
18    $f->addToLog("app/update_DA.php: db->query(\"".$sql_di_sans_dt."\");", VERBOSE_MODE);
19    $f->isDatabaseError($res_di_sans_dt);
20    while ( $row_di_sans_dt = $res_di_sans_dt->fetchrow(DB_FETCHMODE_ASSOC)) {
21        $sql_dt = "SELECT donnees_techniques.donnees_techniques
22                FROM ".DB_PREFIXE."donnees_techniques
23                INNER JOIN ".DB_PREFIXE."dossier ON
24                    dossier.dossier=donnees_techniques.dossier_instruction
25                WHERE dossier.dossier = (
26                    SELECT dossier.dossier
27                    FROM ".DB_PREFIXE."dossier
28                    JOIN ".DB_PREFIXE."avis_decision
29                        ON dossier.avis_decision = avis_decision.avis_decision
30                    JOIN ".DB_PREFIXE."donnees_techniques
31                        ON donnees_techniques.dossier_instruction = dossier.dossier
32                    WHERE  dossier.dossier_autorisation = '".$row_di_sans_dt['dossier_autorisation']."'
33                        AND (date_decision IS NOT NULL
34                        AND (avis_decision.typeavis='F'
35                            OR avis_decision.typeavis='A'))
36                        OR version=0
37                ORDER BY version DESC
38                LIMIT 1)";
39        $res_dt = $f->db->getone($sql_dt);
40        $f->addToLog("app/update_DA.php: db->query(\"".$sql_dt."\");", VERBOSE_MODE);
41        $f->isDatabaseError($res_dt);
42        if(!empty($res_dt)) {
43            $sql_data_dt = "SELECT *
44                    FROM ".DB_PREFIXE."donnees_techniques
45                    WHERE donnees_techniques.donnees_techniques = ".$res_dt;
46            $res_data_dt = $f->db->query($sql_data_dt);
47            $f->addToLog("app/update_DA.php: db->query(\"".$sql_data_dt."\");", VERBOSE_MODE);
48            $f->isDatabaseError($res_data_dt);
49    
50            $row_data_dt = $res_data_dt->fetchrow(DB_FETCHMODE_ASSOC);
51            
52            $row_data_dt['dossier_autorisation'] = null;
53            $row_data_dt['dossier_instruction'] = $row_di_sans_dt['dossier'];
54            foreach ($row_data_dt as $key => $value) {
55                if($value === '') {
56                    unset($row_data_dt[$key]);
57                }
58            }
59            $row_data_dt['donnees_techniques'] = $f->db->nextId(DB_PREFIXE.'donnees_techniques');
60            $res_ajout = $f->db->autoexecute(DB_PREFIXE."donnees_techniques", $row_data_dt, DB_AUTOQUERY_INSERT);
61            $f->addToLog("app/update_DA.php : db->autoexecute(\"".DB_PREFIXE."donnees_techniques\", ".print_r($row_data_dt, true).", DB_AUTOQUERY_INSERT);", VERBOSE_MODE);
62            $f->isDatabaseError($res_ajout);
63        } else {
64            echo "DA sans DT : ".$row_di_sans_dt['dossier_autorisation']."<br/>";
65        }
66    }
67    echo "Fin création DT manquantes<br/>";
68    $content = ob_get_clean();
69    file_put_contents('../tmp/update_da.log', str_replace("<br/>", "\n", $content));
70    ob_start();
71    $sql_date_depot = "UPDATE ".DB_PREFIXE."dossier_autorisation as da SET date_depot = d.date_depot
72    FROM ".DB_PREFIXE."dossier as d WHERE da.dossier_autorisation=d.dossier_autorisation AND d.version=0";
73    $res_date_depot = $f->db->query($sql_date_depot);
74            $f->addToLog("app/update_DA.php: db->query(\"".$sql_date_depot."\");", VERBOSE_MODE);
75            $f->isDatabaseError($res_date_depot);
76    echo "Update date dépôt initiale<br/>";
77    $content = ob_get_clean();
78    file_put_contents('../tmp/update_da.log', str_replace("<br/>", "\n", $content), FILE_APPEND);
79    // Initialisation session cURL
80    $curl = curl_init();
81    $url = 'http://localhost/~nicolas/openads/trunk/services/rest_entry.php/maintenance';
82    // Url de la page à récupérer
83    curl_setopt($curl, CURLOPT_URL, $url);
84    // Permet de récupérer le résultat au lieu de l'afficher
85    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
86    // Démarrer un nouveau cookie de session
87    curl_setopt($curl, CURLOPT_COOKIESESSION, true);
88    
89    curl_setopt($curl, CURLOPT_POST, true);
90    
91            $postfields = array(
92                'module' => 'maj_da_reprise',
93                'data' => array('offset' => 0),
94            );
95    
96    
97    $sql_da = "SELECT count(*) FROM ".DB_PREFIXE."dossier_autorisation";
98    $res_da = $f->db->getone($sql_da);
99  $f->addToLog("app/update_DA.php: db->query(\"".$sql_da."\");", VERBOSE_MODE);  $f->addToLog("app/update_DA.php: db->query(\"".$sql_da."\");", VERBOSE_MODE);
100  $f->isDatabaseError($res_da);  $f->isDatabaseError($res_da);
101    $round = round($res_da/1000)+1;
102  $count_da = 0;  $count_da = 0;
103  gc_enable();  gc_enable();
104  require_once "../obj/dossier_autorisation.class.php";  for($i=0; $i<= $round; $i++) {
105  while($da_id = $res_da->fetchrow(DB_FETCHMODE_ASSOC)) {      ob_start();
106      ob_start();      $postfields['data']['offset']=$i*1000;
107      $fp = fopen("../tmp/err_update_da.csv", "w");      $post = http_build_query($postfields);
108      echo $da_id["dossier_autorisation"]."<br/>";      // Données passées en POST
109      if(!preg_match('/^\w{2}013055\d{7}/', $da_id["dossier_autorisation"])) {      curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
110          echo "Format : ".$da_id["dossier_autorisation"]."<br/>";      
111          fputcsv(      // Retour de la session cURL
112              $fp,      $return = curl_exec($curl);
113              array(      // Decode du json et crée un objet
114                  $da_id["dossier_autorisation"],      $return = json_decode($return);
115                  'Format id',      
116                  'dossier no',      if($return->http_code != 200) {
117                  $da_id["dossier_autorisation"]          echo $return->message."<br/>";
             ),  
             ";"  
         );  
118      }      }
119      echo $da_id["dossier_autorisation"]."<br/>";  
120      $da = new dossier_autorisation($da_id["dossier_autorisation"], $f->db, false);      $ret = explode("|", $return->message);
121      if($da->majDossierAutorisation($fp) !== true) {      $count_da = $count_da + $ret[0];
122        echo "<br/>".$ret[1];
123          fputcsv(      echo $count_da."/".$res_da."<br/>";
             $fp,  
             array(  
                 $da_id["dossier_autorisation"],  
                 'Format id',  
                 'dossier no',  
                 $da_id["dossier_autorisation"]  
             ),  
             ";"  
         );  
     }  
     $count_da++;  
     if($count_da % 100 == 0) {  
         $f->db->commit();  
     }  
     $da->__destruct();  
     unset($da);  
124      gc_collect_cycles();      gc_collect_cycles();
125      $time_end = microtime(true);      $time_end = microtime(true);
126      $time = round($time_end - $time_start,2);      $time = round($time_end - $time_start, 2);
127      echo $count_da." "._("dossier(s) traité(s) en")." ".$time." "._("secondes")."<br/>";      echo $time." "._("secondes")."<br/>";
128      echo memory_get_usage()." octets<br/>";      echo round(memory_get_usage()/1024)." ko<br/>";
129      $content = ob_get_clean();      $content = ob_get_clean();
130        file_put_contents('../tmp/update_da.log', str_replace("<br/>", "\n", $content), FILE_APPEND);
     file_put_contents('../tmp/update_da.log', str_replace("<br/>","\n",$content));  
     fclose($fp);  
   
   
131  }  }
132    
133    curl_close($curl);
134  $f->db->commit();  $f->db->commit();
135  gc_disable();  gc_disable();
136    

Legend:
Removed from v.3110  
changed lines
  Added in v.3121

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26