Page 1 sur 1

La fonctionnalité progress dans PHP 5

Posté : 15 févr. 2015, 19:20
par MARJAN
Bonjour,
J'essaye de suivre les divers tutoriels concernant la balise progress pour tracer la progression d'un upload, et j'ai un problème.
Dans tous les exemples de programmation, on conseille d'utiliser la variable $_SESSION comme ceci :

Code : Tout sélectionner

<input type="hidden" name="<?php echo ini_get('session.upload_progress.name');?>" value="progression" />
puis dans un script session.php vérifier si l'array de $_SESSION se remplit bien lors d'un upload:

Code : Tout sélectionner

<?php session_start(); echo '<pre>'; print_r($_SESSION); ?>
En aucun cas, je n'arrive à remplir l'array qui reste toujours vide :

Code : Tout sélectionner

Array ( )
Je vérifie dans le phpinfo du serveur,et à priori, je pense que session.upload_progress est activée.
Voici mon phpinfo :
session.upload_progress.cleanup On On
session.upload_progress.enabled On On
session.upload_progress.freq 1% 1%
session.upload_progress.min_freq 1 1
session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix upload_progress_ upload_progress_
session.use_cookies On On
session.use_only_cookies Off Off
session.use_strict_mode Off Off
session.use_trans_sid 0 0

Quelqu'un peut-il me renseigner pourquoi l' array $_SESSION reste vide ?
J'aimerai trouver la cause de ce non-fonctionnement, alors qu'aucun tutoriel ne traite de cette évenualité.

Merci d'avance

Re: La fonctionnalité progress dans PHP 5

Posté : 16 févr. 2015, 09:54
par sirakawa
cf doc officielle (c'est mieux que les tutos) :
Le nom de la clé à utiliser dans le tableau $_SESSION pour y stocker les informations de progression. Voir aussi session.upload_progress.prefix. Si $_POST[ini_get("session.upload_progress.name")] n'est pas fourni ou disponible, la progression d'un téléchargement ne sera pas enregistrée. Par défaut, vaut "PHP_SESSION_UPLOAD_PROGRESS".
Donc dans ton cas, je commencerais par écrire cf http://php.net/manual/fr/session.upload-progress.php):
<?php
$key = ini_get("session.upload_progress.prefix") . $_POST[ini_get("session.upload_progress.name")];
var_dump($_SESSION[$key]);
?>
et en me servant de$key par la suite

Re: La fonctionnalité progress dans PHP 5

Posté : 16 févr. 2015, 11:51
par MARJAN
Merci de tes conseils. Je vais essayer de comprendre tout ça et me débrouiller.
Je te tiens au courant de l'avancement.

Re: La fonctionnalité progress dans PHP 5

Posté : 16 févr. 2015, 12:44
par MARJAN
S'il vous plait, comment m'assurer que la mémoire tampon est désactivée sur le serveur, et comment la désactiver si besoin ?

Avertissement

La mise en mémoire tampon de la requête du serveur web doit être désactivée pour la bonne marche de cette fonctionalité, sinon PHP ne verra le fichier qu'une fois qu'il sera totalement téléchargé. Les serveurs comme Nginx sont connus pour mettre en mémoire tampon de grosses requêtes.

Re: La fonctionnalité progress dans PHP 5

Posté : 17 févr. 2015, 15:29
par MARJAN
J'ai contacté mon hébergeur pour lui demander comment désactiver la mémoire tampon du serveur, et il me répond que ce n'est pas possible.
Dans ce cas, est-ce à dire que la progression de l'upload par 'session.upload_progress.prefix').'progression' n'est pas utilisable ?

Re: La fonctionnalité progress dans PHP 5

Posté : 17 févr. 2015, 16:11
par sirakawa
Je crains que oui, ie que tu ne voies rien. Il a peut être moyen de simuler ca;;; mais l'intérêt ?

Re: La fonctionnalité progress dans PHP 5

Posté : 17 févr. 2015, 18:27
par MARJAN
Est-ce que ça veut dire que je ne peux pas faire une barre de progression ?
car je n'y arrive pas, même en copiant littéralement les tutoriels spécialisés.

Re: La fonctionnalité progress dans PHP 5

Posté : 28 févr. 2015, 20:40
par AB
Salut,

C'est pas franchement une bonne idée de se servir de la variable de session "upload_progress" de php pour afficher des barres de progression, car il y a un bug dans chrome et safari qui rend cette solution non fonctionnelle pour ces navigateurs. Cependant si tu veux voir un exemple de mise en application tu en trouveras un ici.

Mais bon aujourd'hui on aurait plus tendance à se servir des fonctionnalités de html5.
Couplé à "un peu" d'ajax, on peut obtenir cette solution d'upload qui permet beaucoup de choses en plus, par exemple de surpasser les configurations serveur "upload_max_filesize", "post_max_size" et "max_file_uploads".
- Il y a aussi un système de sauvegarde automatique qui permet d'arrêter le transfert du fichier pour le reprendre plus tard en utilisant la partie sauvegardée (même après une déconnexion internet).
- Retour de dix informations en temps réel (toutes optionnelles) et la possibilité d'utiliser des styles événementiels qui sont appliqués en fonction de l'état du transfert.

Et comme elle est fournie dans un dossier de test prêt à l'emploi, cela m'étonnerait fort que tu ne puisse pas la mettre en place :wink:

Re: La fonctionnalité progress dans PHP 5

Posté : 01 avr. 2015, 16:34
par divx78
Bonjour,

J'ai développé un soft en PHP qui permet de gérer les downloads de façon autonome sans apache, justement pour un tat d'informations sur les downloads.
Voici le lien du github: https://github.com/dlasserre/SMProtocol

Cordialement.
divx.