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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.