30 |
*/ |
*/ |
31 |
define('HTTP_RESULT_OK', '200'); |
define('HTTP_RESULT_OK', '200'); |
32 |
|
|
|
|
|
|
/** |
|
|
* Fait le parse d'une chaine de characters recu comme |
|
|
* reponse a une requette curl |
|
|
* @param string $return La chaine de caracteres contenant un tableau |
|
|
* en format JSON |
|
|
* @return mixed Tableau associative contenant ce qui se trouve en |
|
|
* format JSON dans l'entree |
|
|
*/ |
|
|
function parse($return) |
|
|
{ |
|
|
// remplace les '{' et '}' par chaine vide |
|
|
$return = str_replace('{', '', $return); |
|
|
$return = str_replace('}', '', $return); |
|
|
// trimme les espaces et tabs |
|
|
$return = trim($return, " \t"); |
|
|
// remplace les retours de ligne |
|
|
$return = preg_replace('/\s\s+/', '', $return); |
|
|
// remplace les '"' par chaine vide |
|
|
$return = str_replace("\"", "", $return); |
|
|
// remplace ": " par ":" |
|
|
$return = str_replace(": ", ":", $return); |
|
|
|
|
|
$result = array(); |
|
|
// obtiens les (clef => valeur) paires |
|
|
$resparray = explode(',', $return); |
|
|
|
|
|
// si on a trouve des (clef => valeur) paires |
|
|
if ($resparray) { |
|
|
foreach ($resparray as $resp) { |
|
|
// obtiens le clef et la valeur |
|
|
$keyvalue = explode(':', $resp); |
|
|
// stocke le clef et la valeur dans le $result |
|
|
$result[trim(str_replace('"', '',$keyvalue[0]))] = |
|
|
trim(str_replace('"', '', $keyvalue[1])); |
|
|
} |
|
|
} |
|
|
// retourne le tableau associative |
|
|
return $result; |
|
|
} |
|
|
|
|
33 |
/** |
/** |
34 |
* Méthode permettant d'envoyer des messages SOAP |
* Méthode permettant d'envoyer des messages SOAP |
35 |
*/ |
*/ |
36 |
function postViaSOAP($msg) { |
function postViaSOAP($msg) { |
|
print_r("\n\n"); |
|
37 |
global $ARRETE_WSDL; |
global $ARRETE_WSDL; |
38 |
global $ARRETE_URL_WS; |
global $ARRETE_URL_WS; |
39 |
|
|
40 |
$data = $msg->body; |
$data = $msg->body; |
41 |
|
$data = json_decode($data); |
42 |
|
|
43 |
$soapClient = new SoapClient($ARRETE_WSDL,array( |
// Verification que l'url du WSDL est définie |
|
"trace" => '1')); |
|
|
|
|
44 |
if (empty($ARRETE_WSDL)) { |
if (empty($ARRETE_WSDL)) { |
45 |
logger::instance()->cleanLog(); |
logger::instance()->cleanLog(); |
46 |
logger::instance()->log("Le URL de fichier WSDL", EXTRA_VERBOSE_MODE); |
logger::instance()->log("L'URL de fichier WSDL", EXTRA_VERBOSE_MODE); |
47 |
logger::instance()->writeLogToFile(); |
logger::instance()->writeLogToFile(); |
48 |
return; |
return; |
49 |
} |
} |
50 |
|
|
51 |
|
// Instanciation du client SOAP |
52 |
|
$soapClient = new SoapClient($ARRETE_WSDL,array("trace" => AMQP_DEBUG)); |
53 |
|
|
|
// Call RemoteFunction () |
|
54 |
$error = 0; |
$error = 0; |
55 |
|
|
56 |
|
// Tentative d'appel de la méthode ws_Send_Chronos_Arret du serveur SOAP |
57 |
try { |
try { |
58 |
$info = $soapClient->__soapCall("ws_Send_Chronos_Arret", array($data)); |
$info = $soapClient->ws_Send_Chronos_Arret($data); |
59 |
|
// accuse de reception du message |
60 |
|
$msg->delivery_info['channel']-> |
61 |
|
basic_ack($msg->delivery_info['delivery_tag']); |
62 |
} catch (SoapFault $fault) { |
} catch (SoapFault $fault) { |
63 |
|
// Gestion d'erreurs |
64 |
$error = 1; |
$error = 1; |
65 |
print_r("\nERROR: faultcode :".$fault->faultcode."\n"); |
|
|
print("ERROR: faultstring :".$fault->faultstring."\n"); |
|
66 |
logger::instance()->cleanLog(); |
logger::instance()->cleanLog(); |
67 |
logger::instance()->log("Erreur ".$fault->faultcode." : ".$fault->faultstring, EXTRA_VERBOSE_MODE); |
logger::instance()->log("Erreur ".$fault->faultcode." : ".$fault->faultstring, EXTRA_VERBOSE_MODE); |
68 |
logger::instance()->writeLogToFile(); |
logger::instance()->writeLogToFile(); |
69 |
|
// le resultat de l'execution de curl indique un erreur |
70 |
|
// dors un peu avant de refuser le message |
71 |
|
sleep(2); |
72 |
|
// refuse le message |
73 |
|
$msg->delivery_info['channel']->basic_reject( |
74 |
|
$msg->delivery_info['delivery_tag'], true); |
75 |
|
} |
76 |
|
|
77 |
|
// envoie un message avec la chaine "quit" pour ce consumeur |
78 |
|
if ($msg->body === 'quit') { |
79 |
|
$msg->delivery_info['channel']-> |
80 |
|
basic_cancel($msg->delivery_info['consumer_tag']); |
81 |
} |
} |
|
} |
|
|
|
|
|
|
|
82 |
|
|
83 |
// pour des besoins de log il faut set $_SERVER["REQUEST_URI"] |
// Retour de la méthode ws_Send_Chronos_Arret (à utiliser si besoin) |
84 |
if (!isset($_SERVER["REQUEST_URI"])) { |
// $info->ws_DA_Out_4D_vError |
85 |
$_SERVER["REQUEST_URI"] = __FILE__; |
// $info->ws_DA_Out_Chrono_Arret_ADS |
86 |
|
// $info->ws_DA_Out_N_Doss_ADS |
87 |
} |
} |
88 |
|
|
89 |
// si le $argv[1] manque on ne peut pas cree un tag unique pour le |
// si le $argv[1] manque on ne peut pas cree un tag unique pour le |