Lire Response header après XMLHTTP Post
Bonjour,
En VB6
With CreateObject("Microsoft.XMLHTTP")
.Open "POST", "URL du script php qui fait essentiellement move_uploaded_fil" & Folder, False ' aSync = false
.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY
.send pvToByteArray(sPostData)
If .Status = 200 Then
' OK
Else
Err = CStr(.Status) & " " & .StatusText
End If
J'obtiens parfois une erreur 503 Service Unavailable qui n'est pas très explicite.
Je vois qu'on peut obtenir davantage d'infos dans un Response header : comment l'obtenir et le décoder ?
Grand merci d'avance pour votre aide
3 réponses
-
Modérateur
Bonjour,
regarde du côté de la méthode .getAllResponseHeaders
-
-
Contributeur@Herve_be
Si tu as un site web en php, tu peux utiliser http_response_code() pour renvoyer un code d'erreur.
-
@yg_be
http_response_code va-t-il aussi générer un header représentatif ?
-
Contributeur@Herve_be
Cela permettra de vérifier que ton code fonctionne.
-
@yg_be
Merci, http_response_code(503) fonctionne, j'obtiens
Date: Thu, 05 Dec 2024 14:47:17 GMT Server: Apache X-Powered-By: PHP/8.0.30 Cache-Control: no-cache Content-Type: text/html; charset=ISO-8859-1 X-Onecom-Cluster-Name: X-Varnish: 25067243 Age: 0 Via: 1.1 webcache2 (Varnish/trunk) Connection: keep-alive Transfer-Encoding: chunkedEn débroussaillant
Date: Thu, 05 Dec 2024 14:47:17 GMT
Server: Apache X-Powered-By: PHP/8.0.30
Cache-Control: no-cache
Content-Type: text/html; charset=ISO-8859-1
X-Onecom-Cluster-Name: X-Varnish: 25067243
Age: 0
Via: 1.1 webcache2 (Varnish/trunk)
Connection: keep-alive
Transfer-Encoding: chunkedComment comprendre pourquoi j'ai eu l'erreur 503 ?
-
-
Modérateur
Une erreur 500 est une erreur "serveur" (pb de configuration ou erreur dans le code...)
Là.. c'est une erreur 503 .. les causes peuvent être variées
par exemple:
Le serveur est surchargé : Il reçoit trop de demandes et n’arrive pas à les gérer. Pour cette raison il répond donc avec ce message d’erreur. Les origines de ces surcharges sont très différentes : cela peut être par exemple une hausse inattendue du trafic. Une croissance continue du projet Web peut également provoquer une surcharge si dans le même temps les ressources ne sont pas mises à niveau. Des attaques de logiciels malveillants et des spams peuvent aussi être à l’origine d’une surcharge. Enfin une mauvaise programmation du système de gestion de contenu ou de l’application Web peut aussi provoquer ce phénomène.
-
-
Modérateur@Herve_be
ajoute des logs côté serveur pour chaque appel à tes API et demande à l'utilisateur qui rencontre le souci de t'indiquer à quelle heure ça s'est produit... tu pourras essayer de voir l'adresse utilisée par l'utilisateur, ainsi que les paramètres envoyés et voir si tu le test de la même façon chez toi ça fonctionne correctement...
-
Contributeur@Herve_be
Si je comprends bien ce que tu n'expliques pas, le client en question, c'est ton code PHP.
Comment sais-tu que cela n'arrive pas avec d'autres clients?
Ton code PHP ne se comporte peut-être pas comme un autre client, il est peut-être trop gourmand.
-
@yg_be
Ce que j'appelle "client" est l'utilisateur du logiciel VB6 qui appelle le script PHP.
Ce logiciel est utilisé en moyenne 20 fois par jour par plus de 5.000 utilisateurs.
Un seul m'a signalé ce problème, je pense donc que la raison est chez lui.
-
@jordane45
Chez One.com le log n'est pas disponible directement, il faut demander le log pour un créneau donné, et comme je ne sais pas quand le problème va survenir ...
-
-
Je résume parce que ça devient compliqué :
Un de mes 5.000+ utilisateurs reçoit parfois une erreur 503 Service Unavailable lors de l'appel suivant
With CreateObject("Microsoft.XMLHTTP") .Open "POST", "URL du script php qui fait essentiellement move_uploaded_file" & Folder, False ' aSync = false .setRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY .send pvToByteArray(sPostData).getAllResponseHeaders ne permet pas d'expliquer l'origine de l'erreur.
Pour obtenir un error log one.com m'a demandé d'ajouter dans mon script php
ini_set ('track_errors', 1); ini_set ('log_errors', 1); ini_set ('error_log', '/customers/e/a/4/rudyv.be/httpd.www/php_error.log');Je simule une erreur PHP avec http_response_code(503);
l'erreur se produit bien (.Status = 503) mais je n'ai pas de fichier php_error.log.-
-
@yg_be
Alors il n'y a plus qu'à attendre qu'elle se produise à nouveau.
-