2013-01-08 7 views
3

J'ai essayé de chercher ceci pour toujours, mais malheureusement je n'ai pas pu trouver la réponse. Je calcule beaucoup de corrélations de Pearson sur d'énormes matrices sur mon serveur. Je fais cela en ouvrant example.org/testscript.php. Le script lui-même se terminera environ 2 jours après son démarrage et exécutera de nombreuses bases de données INSERT INTO à des fins de recommandation.Fermer la fenêtre STOP php script?

Je me demandais quand je fermais la fenêtre de mon navigateur, si le script PHP s'arrêterait ou non. Je ne suppose pas; Cependant, je ne suis pas sûr à 100%.

P.S. J'ai remarqué que dans certains navigateurs sur certains ordinateurs, je recevrais une erreur de serveur interne (500) lors du démarrage du script après environ 10 minutes. Le script lui-même était toujours en cours d'exécution car il insérait toujours des lignes dans ma base de données.

Sur cet ordinateur, cependant, je n'ai pas reçu une telle erreur et donc je me demandais ce qui se passerait lorsque je ferais la fermeture de l'onglet.

+5

2 jours? navigateur? Pour ce faire, en arrière-plan appelé à partir du cli –

+0

malheureusement, mon fournisseur d'hébergement ne permet pas de telles options. – user1949616

+0

PHP a normalement un temps d'exécution maximum, et il est normalement fixé à environ 30 secondes (pas toujours, mais c'est un défaut dans la plupart des versions). Si vous n'avez pas modifié les valeurs PHP par défaut, votre script devrait s'arrêter automatiquement après la fin de [max_execution_time] (http://php.net/manual/fr/info.configuration.php#ini.max-execution-time)? – Stu

Répondre

4

Le script php se termine après l'expiration du délai. Vous pouvez modifier le délai d'expiration: http://php.net/manual/en/function.set-time-limit.php

Le navigateur sera toutefois temporisé beaucoup plus tôt si vous ne produisez aucune sortie. Le délai d'expiration du navigateur est bien sûr spécifique au navigateur.

Comme Dagon l'a suggéré, la manière correcte serait d'exécuter le script php sur le serveur en arrière-plan.