2011-07-20 3 views
1

J'utilise cette fonction pour faire des demandes cURL:PHP curl_exec() se bloque

function curl_request($options) //single custom cURL request. 
{ 
    $ch = curl_init(); 

    $options[CURLOPT_FOLLOWLOCATION] = true; 
    $options[CURLOPT_COOKIEJAR] = 'cookies.txt'; 
    $options[CURLOPT_COOKIEFILE] = 'cookies.txt'; 
    $options[CURLINFO_HEADER_OUT] = true; 
    $options[CURLOPT_VERBOSE] = true; 
    $options[CURLOPT_RETURNTRANSFER] = true; 
    $options[CURLOPT_CONNECTTIMEOUT] = 5; 
    $options[CURLOPT_TIMEOUT] = 5; 

    curl_setopt_array($ch, $options); 

    $response = curl_exec($ch); 

    curl_close($ch); 

    return $response; 
} 

Le script se fige parfois, mais pas toujours, sur la ligne $response = curl_exec($ch). Cela se produit même lorsque le script PHP est défini avec un délai d'attente infini (du côté client, Firebug le prend comme "Aborted"). Il n'y a rien dans le journal des erreurs .. Il ne passe tout simplement pas cette ligne quand il se bloque.

Que pourrait-il se passer? Aucune suggestion?

+0

'CURLOPT_COOKIEJAR' et' CURLOPT_COOKIEFILE' pointant vers le même fichier? vous êtes sûr que c'est ce que vous voulez? Pour tester, je voudrais juste commenter ces deux lignes pour éviter un blocage à cause de l'accès au fichier. – hakre

+0

La chose est la demande nécessite des cookies pour fonctionner – babonk

+1

ouais bien sûr, mais juste pour le débogage. Vous pouvez également surveiller le trafic réseau et signaler ce qui se passe au cas où le script se bloque. – hakre

Répondre

2

Le problème semble avoir été les ressources du serveur. Quand je suis passé à un meilleur hébergeur avec une limite de bande passante plus élevée, tout a bien fonctionné.