Bonsoir,

Tout d'abord un grand MERCI à Grafikart pour la qualité du site et des tutoriels proposés. :)

Je commence à développer un plugin CakePHP d'upload de fichiers en ajax complètement inspiré du tutoriel jQuery upload en drag&drop.
Tout marche bien, je peux uploader des dizaines de fichiers, la base de données est mise à jour à chaque fichier, etc..
Jusqu'au moment où apache me renvoie une "500 Internal Server Error". Je dois actualiser la page pour que l'upload fonctionne à nouveau.
Après quelques (secondes, minutes) heures d'investigations, il semblerait que le problème est dû aux propriétés Keep-Alive "Max Requests" et "Timeouts" qu'on peut trouver dans phpinfo(), qui d'après ce que j'ai compris déterminent notamment le délai après lequel la connexion se ferme.
En effet, si j'attends + de 5 secondes entre 2 drag&drops, le retour du 2eme drap&drop est :

HTTP/1.1 500 Internal Server Error
Date: Mon, 29 Jul 2013 23:15:20 GMT
Server: Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
X-Powered-By: PHP/5.4.7
Content-Length: 122
Connection: close
Content-Type: text/html; charset=UTF-8

En comparaison, voici le retour d'un upload qui s'est bien effectué :

Connection:Keep-Alive
Content-Length:121
Content-Type:application/json
Date:Mon, 29 Jul 2013 23:16:04 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
X-Powered-By:PHP/5.4.7

Avez-vous déjà rencontré ce problème ?
Est-il possible de modifier les propriétés Keep-Alive à la volée pour garder une connexion ouverte ?
Est-ce que je fais fausse route ?

Pour info voici les 2 lignes en question de mon phpinfo() :
Max Requests Per Child: 0 - Keep Alive: on - Max Per Connection: 100
Timeouts Connection: 300 - Keep-Alive: 5

Cordialement,
Alexandre

2 réponses


satchette
Auteur
Réponse acceptée

Problème résolu.
Une faute de frappe dans le nom de mon modèle... C'est dingue le temps qu'on peut perdre pour rien. :(
En tout cas le fait que le script fonctionnait avant le délai de 5 secondes et ne fonctionnait plus après reste un mystère pour moi.

Ce réglage vient d'Apache à toi de le régler manuellement dans ton fichier de config du serveur:
Cf la doc d'Apache