Je fais de la manipulation d'image lourde en PHP et je voudrais montrer à l'utilisateur comment les choses progressent. J'ai donc essayé de faire quelque chose comme ceci:Progression de php lourd en utilisant des sessions
for($i = 0; $i < $rowCount; $i++) {
session_start();
$_SESSION['progress'] = $i/ $rowCount;
session_write_close();
processLine($i);
}
Et puis j'utilise AJAX appelle à un autre fichier php qui retourne essentiellement la valeur de $ _SESSION [ « progrès »]. Le problème est, il n'est pas défini. Est-ce parce que vous ne devriez pas commencer une session plus d'une fois par fichier? Si je viens d'ouvrir la session et que je ne la ferme pas entre chaque ligne, la variable SESSION est verrouillée et mon fichier d'interrogation ne sera pas traité tant que toute la manipulation de l'image n'aura pas été effectuée.
N'importe quel moyen de faire fonctionner cela en utilisant des sessions? Je pense que cela pourrait fonctionner si je mettais la progression dans une base de données ou un fichier, mais c'est lent et nous devrons faire un peu de travail pour identifier les utilisateurs (en utilisant les ips ou les identifiants de session). Utiliser des sessions prendrait soin de ces choses.
Oui, je pensais que c'était le problème, donc vous ne pouvez pas débloquer la session dans le processus, de sorte que d'autres processus peuvent l'utiliser pour vérifier la progression – marcusklaas
Non. Pour une approche différente, par exemple, créez un fichier temporaire, peut-être nommé d'après le nom de l'image en cours de traitement, puis enregistrez la progression dans ce fichier temporaire. son fichier php comme checkstatus.php? f = filename – Dmitri
Aussi si vous utilisez memcache, c'est encore mieux et plus rapide d'enregistrer le résultat de la progression dans memcache, il sera juste plus rapide que d'utiliser le fichier temporaire. – Dmitri