2009-04-16 10 views
2

J'ai un téléchargement d'image pour un diaporama, et les utilisateurs téléchargent en continu des fichiers de 2 Mo plus. Les fichiers de cette taille fonctionnent correctement, mais les fichiers de taille supérieure provoquent ce qui semble être un délai d'expiration du navigateur.Erreurs de téléchargement de fichiers volumineux avec PHP

Voici mes php paramètres ini:

  • Max allocation de mémoire: 12M
  • Taille max upload de fichier: 10M
  • Max HTTP Taille du message: 10M
  • Max temps d'exécution: 60
  • Temps d'analyse d'entrée max: 120

Ces paramètres sont en Le fichier de configuration lui-même, et je peux les changer directement. Les modifications apparaissent lors de l'utilisation de phpinfo().

Je cours sur un serveur Apache et PHP 4.3.9 (le choix du client, pas le mien). La limite de la requête du serveur Apache est définie par défaut, qui, je crois, est d'environ 2 Go? Lorsque j'utilise le moniteur réseau firebug, il semble que je ne reçois pas une réponse complète du serveur, bien que je ne sois pas trop expérimenté pour utiliser cet outil. Les choses semblent arriver à environ 43 secondes.

Toute l'aide que je peux trouver sur le net pointe vers les paramètres ci-dessus comme les coupables, mais tous ces paramètres sont beaucoup plus élevés que ce fichier de 2 Mo et le délai de 43 secondes.

Des suggestions où je peux aller d'ici pour résoudre ce problème?

Voici les paramètres php ini pertinents de phpinfo(). Faites-moi savoir si je dois poster plus.

  • file_uploads Sur Sur
  • max_execution_time 60 60
  • max_input_nesting_level 64 64
  • max_input_time 120 120
  • memory_limit 12M 12M
  • post_max_size 10M 10M
  • safe_mode Off Off
  • upload_max_filesize 10M 10M
  • upload_tmp_dir aucune valeur aucune valeur

Répondre

2

Assurez-vous que vous avez des rapports d'erreur activée dans php.ini: display_errors = Sur; Cela pourrait vous donner une idée de ce qui se passe. Les serveurs de production ont généralement (devraient) un rapport d'erreurs désactivé.

J'ai récemment eu un problème similaire et l'augmentation du paramètre memory_limit a fonctionné pour moi. Si vous lisez les fichiers contenu en variables, chaque variable prendra environ autant de mémoire que la taille du fichier, ce qui augmente les besoins en mémoire des scripts.

+0

Ce que j'ai trouvé exactement.J'ai décidé de regarder ce J'ai joué avec l'augmentation de l'allocation de mémoire, et cela a fonctionné! Je courais certainement dans la mauvaise avenue.Même avec display_errors = ON, il n'y avait pas d'erreur. – Mesidin

0

Où sont ces paramètres? Si vous utilisez .htaccess, votre configuration Apache peut ne pas vous permettre de remplacer ces paramètres.

Je vous suggère de vérifier avec un phpinfo() appeler si ces paramètres sont effectivement appliqués ou non:

<?php 
    phpinfo(); 
?> 
+0

J'ai la possibilité d'éditer le fichier ini php sur ce serveur particulier, et ils apparaissent dans l'info php. C'est l'une des raisons pour lesquelles ce problème particulier me dérange vraiment. Je n'ai aucun problème à dire aux gens de télécharger des fichiers plus petits, mais j'ai un problème intéressant à résoudre maintenant. ;) – Mesidin

+0

Pourriez-vous s'il vous plaît poster vos paramètres PHP.ini? Je veux dire, juste ceux qui affectent les téléchargements de fichiers. – Seb

+0

Le message a été mis à jour! – Mesidin

0

Si c'est un hôte partagé, votre hôte peut définir une limite pour passer outre le vôtre. Sinon, essayez d'augmenter la limite POST au-delà de la taille de téléchargement du fichier. AFAIK, les ajouts sont POSTED.

+0

Je viens de tomber la limite POST jusqu'à 11M, 1M au-dessus de la taille de téléchargement de fichier.J'envoie un petit sujet de données de texte avec le fichier, environ 30 caractères max .. Rien n'a changé malheureusement – Mesidin

0

Si le problème est dû au fait que l'hôte a dépassé votre délai, vous pouvez rechercher un hôte qui utilise encore Apache 1: Dans Apache 1, le fichier .htaccess local remplace le paramètre global même pour le délai d'attente. Dans le cas contraire, il existe des douzaines de programmes d'application Java applett disponibles pour quelques dollars seulement (Google it). Ils divisent le fichier, téléchargent les pièces et remettent les pièces ensemble de manière transparente.

Ceci est un correctif garanti pour le délai d'attente, et a l'avantage supplémentaire de permettre aux utilisateurs de faire une pause et de reprendre leur téléchargement, voir la progression, et tout.

(. Uploaders en Flash n'ont pas cet avantage)

Questions connexes