Bonjour,
J'ai un probleme sur un site avec une requete cURL qui echoue apres le TIMEOUT (ou mouline a l infini si pas de timeout)
il s agit d un site qui se connecte a un "webservice" qui renvoye du code XML en retour, les variables d input sont simplement passé en POST
sur le serveur de préproduction, en PHP5.3 aucun soucis, les réponses etaient bien recu
sur le serveur de production en PHP 5.2.6 (qui est celui qui héberge le webservice) : timeout
une idée d ou cela peut venir ?
voici le code qui appelle le WS :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 public function CallWS($fnc_name,Array $params) { $this->curl = curl_init(); $session_id = session_id(); $rnd = base64_encode(rand(10000,9999999)); $url = sprintf("http://lurlduservice.com/dispatch.php?PHPSESSID=%s&service=%s&source=mobile&alea=%s", $session_id, $fnc_name, $rnd); $post_params = ''; if (count($params)>0) { foreach ($params as $k=>$v) { $post_params.="$k=$v&"; } $post_params = substr($post_params,0,-1); } $this->curl = curl_init(); curl_setopt($this->curl, CURLOPT_URL, $url); curl_setopt($this->curl,CURLOPT_TIMEOUT , 5); curl_setopt($this->curl,CURLOPT_RETURNTRANSFER,true); curl_setopt($this->curl, CURLOPT_POST, 1); curl_setopt($this->curl, CURLOPT_POSTFIELDS, $post_params); $this->xml_data = curl_exec($this->curl); curl_close($this->curl);
j'ai d abord pensé a un probleme de firewall/règle iptables mais je ne vois pas trop pourquoi le serveur ne pourrait pas communiquer sur le port 80 en boucle locale alors que ca marche depuis un autre serveur ...
le support curl est quand a lui bien activité sur le serveur de production.