2017-03-06 2 views
1

Je suis confronté à quelques problèmes avec l'exécution de code en arrière-plan sur Windows. Je suis en train d'exécuter une grande demande de traitement (envoi des e-mails) en arrière-plan et je suis en utilisant lePHP register_shutdown_function sur IIS 8.5 tirant sur la même requête

suivant
register_shutdown_function(array(__CLASS__, "consume_on_shutdown")); 

pour démarrer le processus une fois que la demande est faite. Cela fonctionne bien sur mon Mac mais quand j'essaye de le faire sur Windows, il s'exécute immédiatement sur la même requête donc il pend pendant des siècles. Est-ce que quelqu'un a rencontré des problèmes similaires?

+0

http://php.net/manual/fr/fonction.fastcgi-finish-request.php – Deadooshka

Répondre

1

register_shutdown_function ne garantit pas que la connexion sera fermée avant l'exécution de la fonction d'arrêt. Comme vous le voyez sur Windows, il maintient la connexion au client ouverte jusqu'à ce que votre script et la fonction shutdown soient tous les deux exécutés. Si vous avez besoin de Windows, vos meilleures options sont de l'envoyer à un planificateur ou de lancer un thread séparé, qui ne sont pas facilement portables pour les systèmes d'exploitation non-Windows pour la portabilité du code.