2015-04-25 2 views
0

En utilisant session_set_save_handler dans PHP 5.4.40, j'ai créé un gestionnaire de session qui fonctionne bien ... à l'exception des données session.upload_progress lors du téléchargement d'un fichier.Stockage des données PHP session.upload_progress dans la base de données

Mon gestionnaire de session ne tient aucun compte de télécharger des données de progression, et je ne peux pas à obtenir les données de progression pour sauver du tout quand:

  • session.save_handler = fichiers; et
  • le fichier de session est enregistré dans le même chemin que session.save_path

Est-il possible d'enregistrer des données session.upload_progress dans la base de données?

Mise à jour: comme en PHP 7, cela semble toujours être un problème. J'ai donc ouvert PHP 7 Bug #74131

Répondre

0

La documentation php dit ce here:

Avertissement: La mise en mémoire tampon de demande de serveur web doit être désactivé pour que cela fonctionne correctement, sinon PHP peut voir le téléchargement de fichiers une seule fois entièrement téléchargé . Les serveurs tels que Nginx sont connus pour tamponner les demandes plus importantes.

Donc ce que vous voulez faire peut être impossible ...

+0

Merci, mais je ne suis pas sûr de comprendre: les données de progression s'écrivent parfaitement dans le fichier - pourquoi une destination d'écriture différente ferait-elle une différence? – Pancho

+0

d'accord ça va. Si vous pouvez l'écrire dans un fichier, vous pouvez l'écrire dans une base de données! Je pensais que vous ne pouviez pas accéder à l'information. –

+0

Oui, session.upload_progress écrit dans le fichier "normal"/tmp/sess _... "mais ignore complètement mon gestionnaire de session, de sorte que les données de téléchargement sont écrites à 100% dans un fichier, mais n'écrivent pas dans la base de données. J'utilise mon gestionnaire de session, $ _SESSION retourne toutes les informations de session SAUF les données de session.upload_progress S'il n'y a aucun moyen de corriger ce problème, dans la mesure où je peux voir la gestion de session.upload_progress ne se comporte pas de manière alignée avec $ normal _SESSION gère et rend le mécanisme de téléchargement de fichiers PHP inutile pour les environnements de serveur Web "supérieur à 1" – Pancho

0

@Pancho je suis passé à utiliser PECL Uploadprogress. Fonctionne bien. Avoir à utiliser mod_php et pas fastcgi/fpm. Les sessions utilisateur sont toutes dans la base de données.

+0

merci de m'avoir informé Eric! Quelle version de PHP utilisez-vous? Est-ce 7.x ou 5? – Pancho

+0

fonctionnant 5.6.xxx – eric

+0

merci beaucoup Eric - Notre approche APCu fonctionne également à 100% sur 5.6 Malheureusement, c'est 7 avec qui je me bats (voir le bug/problème que j'ai ouvert sur PHP ci-dessus si vous êtes intéressé) et n'hésitez pas à voter pour le problème si vous d'accord que c'est :)) – Pancho