2012-04-19 1 views
2

J'ai un problème avec une requête CURL que je fais en php. Le problème est que, au hasard, il renvoie un timeout. Ce que j'ai remarqué, c'est qu'après avoir ajouté des pages d'erreur personnalisées, la page personnalisée 404 fonctionne, mais la page 408 une fois terminée avec curl ne renvoie rien.Code http aléatoire 408 avec CURL en PHP

Exemple de page 404: http://emailingrestauraweb.com/qweqwe

Voici mon code php:

$strCookie = 'PHPSESSID=' . $this->SessionID; 
$curl_log = fopen("curl.txt", 'w'); 
//Setup connection 
$curl = curl_init(); 
curl_setopt_array($curl,array(
     CURLOPT_URL => $URL, 
     CURLOPT_USERAGENT=>$this->UserAgent, 
     CURLOPT_POST =>true, 
     CURLOPT_POSTFIELDS => http_build_query($arrParams, null, '&'), 
     CURLOPT_COOKIE => $strCookie, 
     CURLOPT_COOKIESESSION=>1, 
     CURLOPT_HEADER => 1, 
     CURLOPT_VERBOSE   => 0,   // Logs verbose output to STDERR 
     CURLOPT_SSL_VERIFYPEER => 0,   // Do not verify certificate 
     CURLOPT_TIMEOUT => 300, 
     CURLOPT_CONNECTTIMEOUT=>260, 
     CURLOPT_NOSIGNAL => 1, 
     CURLOPT_RETURNTRANSFER=>1 
    )); 

    //Send request 
    $result_json = curl_exec($curl); 
    $error_code =curl_getinfo($curl, CURLINFO_HTTP_CODE); 
    curl_close($curl); 

J'ai essayé tout ce que je ne sais pas pourquoi cela se produit et il est trop aléatoire.

MISE À JOUR 1

J'exécuter les scripts sur 2 tranches de Slicehost. Je fais une demande d'une tranche à l'autre à un api. L'API est un logiciel OEMPRO pour l'envoi de courriels. Je comprends que 408 signifie timeout mais cela semble aléatoire et la plupart du temps c'est répétitif comme un bloc et je me demande si cela pourrait être quelque chose que ce logiciel pourrait utiliser.

Ce problème est arrivé après mon domaine où OEMPRO est en cours d'exécution a expiré pour comme 3 jours, puis il est revenu et maintenant j'ai ce problème ...

Merci pour toutes les réponses.

+0

408 est un timeout ... vous le savez, non? – HappyTimeGopher

+0

Ces pages d'erreur sont-elles aussi PHP? Tout htaccess aussi bien? – HappyTimeGopher

+0

Oui, je sais que 408 est un délai d'expiration. La chose est si vous définissez une page d'erreur pour le délai d'attente alors pourquoi ne l'affiche pas. Serait-ce une erreur dans ma boucle? C'est ce que je me demande d'être sincère. –

Répondre

1

Vous avez indiqué que votre domaine a expiré depuis 3 jours. Il y a une forte probabilité que c'était un problème de résolution de DNS. Donnez-lui 24-48 heures et faites-nous savoir s'il y a un changement.

+0

oui c'est vrai aujourd'hui il semblait que l'erreur n'arrive pas que souvent je vais essayer plus loin et voir si 408 se produit si ce n'est pas la réponse. Merci. –

0

Un 408 ne renvoie souvent pas (contient) un corps de réponse. Le serveur veut simplement fermer la connexion à vous ne voulez plus déranger avec votre demande lente. Bien sûr, le standard permet de passer un corps, et même si vous le lisez un peu, il devrait même retourner cette entité pour explication, mais, bien, ne dépendez pas de lui. Il n'y a aucun message de toute façon. Réessayez la demande à la place.

+0

Ce n'est certainement pas vrai. Je 408 peut retourner un corps de réponse, rien dans la spécification qui ne permet pas cela: http://tools.ietf.org/html/rfc2616#section-10.4.9 – Evert

+0

J'ai écrit souvent. Bien sûr que ça peut. Mais je ne me demanderai pas si non. – hakre

+0

Seulement après votre édition :) – Evert