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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3121 - (show annotations)
Thu Aug 7 08:27:01 2014 UTC (10 years, 6 months ago) by nhaye
Original Path: trunk/app/update_da.php
File size: 5760 byte(s)
Amélioration du script de reprise des DA :
- création d'un service sur la ressource maintenance permettant de traiter des blocs de 1000 DA, en lui envoyant l'offset
- ajout des DA manquants sur les DI
- maj de la date de dépôt initiale dans les DA

1 <?php
2 /**
3 * Ce script permet de mettre à jour l'ensemble des DA en fonction de leurs DI
4 *
5 * @package openfoncier
6 * @version SVN : $Id$
7 */
8 ini_set('max_execution_time', 86400);
9 $time_start = microtime(true);
10 //
11 require_once "../obj/utils.class.php";
12 $f = new utils("nohtml", null, _("Calcul des dossiers d'autorisation en base"));
13 ob_start();
14 $sql_di_sans_dt = "SELECT dossier, dossier.dossier_autorisation FROM ".DB_PREFIXE."dossier
15 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);
100 $f->isDatabaseError($res_da);
101 $round = round($res_da/1000)+1;
102 $count_da = 0;
103 gc_enable();
104 for($i=0; $i<= $round; $i++) {
105 ob_start();
106 $postfields['data']['offset']=$i*1000;
107 $post = http_build_query($postfields);
108 // Données passées en POST
109 curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
110
111 // Retour de la session cURL
112 $return = curl_exec($curl);
113 // Decode du json et crée un objet
114 $return = json_decode($return);
115
116 if($return->http_code != 200) {
117 echo $return->message."<br/>";
118 }
119
120 $ret = explode("|", $return->message);
121 $count_da = $count_da + $ret[0];
122 echo "<br/>".$ret[1];
123 echo $count_da."/".$res_da."<br/>";
124 gc_collect_cycles();
125 $time_end = microtime(true);
126 $time = round($time_end - $time_start, 2);
127 echo $time." "._("secondes")."<br/>";
128 echo round(memory_get_usage()/1024)." ko<br/>";
129 $content = ob_get_clean();
130 file_put_contents('../tmp/update_da.log', str_replace("<br/>", "\n", $content), FILE_APPEND);
131 }
132
133 curl_close($curl);
134 $f->db->commit();
135 gc_disable();
136
137 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26