Subversion Repositories Applications.referentiel

Rev

Rev 37 | Rev 45 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 37 Rev 39
Line 257... Line 257...
257
		$this->url->setVariableRequete('ref', $referentiel);
257
		$this->url->setVariableRequete('ref', $referentiel);
258
		$url = $this->url->getURL();
258
		$url = $this->url->getURL();
259
		$this->url->unsetVariablesRequete(array('module', 'id-r', 'ref'));
259
		$this->url->unsetVariablesRequete(array('module', 'id-r', 'ref'));
260
		return $url;
260
		return $url;
261
	}
261
	}
-
 
262
	
-
 
263
	/**
-
 
264
	 * Lance l'ajout d'un traitement
-
 
265
	 */
-
 
266
	protected function ajouterTraitement($referentiel_code, $script_nom) {
-
 
267
		if (is_null($referentiel_code)) {
-
 
268
			$this->addMessage("Aucun code de projet de référentiel n'est indiqué (Ex. bdnff).");
-
 
269
		} else {
-
 
270
			$traitementDao = new TraitementDao();
-
 
271
			$resultat_traitement_en_attente = $traitementDao->getTraitementsEnAttente($referentiel_code, $script_nom);
-
 
272
			if ($resultat_traitement_en_attente) {
-
 
273
				$this->addMessage("Un traitement est déjà en attente...");
-
 
274
			} else {
-
 
275
				$resultat_traitement_en_cours = $traitementDao->getTraitementsEnCours($referentiel_code, $script_nom);
-
 
276
				if ($resultat_traitement_en_cours) {
-
 
277
					$this->addMessage("Un traitement est déjà en cours...");
-
 
278
				} else {
-
 
279
					$resultat = $traitementDao->ajouterTraitement($referentiel_code, $script_nom);
-
 
280
					if ($resultat != false) {
-
 
281
						$this->addMessage("Le traitement #'$resultat' a été ajouté.");
-
 
282
						$this->lancerScript($referentiel_code, $script_nom);
-
 
283
					} else {
-
 
284
						$this->addMessage("Un problème est survenu lors de la tentative d'ajout du traitement.");
-
 
285
					}
-
 
286
				}
-
 
287
			}
-
 
288
		}
-
 
289
	}
-
 
290
	
-
 
291
	/**
-
 
292
	 * Lance le script d'execution des traitements
-
 
293
	 */
-
 
294
	protected function lancerScript($referentiel_code, $script_nom) {
-
 
295
		$php = Config::get('chemin_bin_php');
-
 
296
		$exe = Config::get('chemin_script');
-
 
297
		$action = 'tout';
-
 
298
		$log = Config::get('chemin_script_log');
-
 
299
		$commande = "$php -d memory_limit=1073741824 -f $exe $script_nom -p $referentiel_code -a $action > $log &";
-
 
300
		
-
 
301
		if ($this->verifierSafeModeOff() === false) {
-
 
302
			$e = "Le safe_mode est actif sur ce serveur.";
-
 
303
		} else if ($this->verifierAccesFonctionExec() === false) {
-
 
304
			$e = "La fonction 'exec()' fait partie des fonctions désactivées sur ce serveur (voir disable_functions).";
-
 
305
		} else {
-
 
306
			$this->addMessage("Lancement du script effectuant les traitements.");
-
 
307
			exec($commande);
-
 
308
		}
-
 
309
 
-
 
310
		// Affichage des message de paramêtrage du serveur si nécessaire
-
 
311
		if (Config::get('script_messages') == true) {
-
 
312
			$message_erreur_tpl = "%s\n.".
-
 
313
				"Il est nécessaire de configurer le lancement du script via une tache dans le cron.\n".
-
 
314
				"La commande à lancer est : <code>$commande</code>";
-
 
315
			$this->addMessage(sprintf($message_erreur_tpl, $e));
-
 
316
		}
-
 
317
	}
-
 
318
	
-
 
319
	private function verifierSafeModeOff() {
-
 
320
		return ('1' == ini_get('safe_mode')) ? false : true;
-
 
321
	}
-
 
322
	
-
 
323
	private function verifierAccesFonctionExec() {
-
 
324
		$disabled = explode(', ', ini_get('disable_functions'));
-
 
325
		return !in_array('exec', $disabled);
-
 
326
	}
262
}
327
}
263
328