Limite le temps d'exécution d'une fonction ou d'une commande PHP
Salut est-il possible de régler l'heure limite seulement à une commande ou à une fonction par exemple:
function doSomething()
{
//..code here..
function1();
//.. some code here..
}
Je veux régler l'heure limite seulement à fonction1.
Il quitte le set_time_limit mais je pense que cela définit la limite de temps pour l'ensemble du script.
Quelqu'un une Idée?
source d'informationauteur Granit | 2009-07-24
Vous devez vous connecter pour publier un commentaire.
set_time_limit() fonctionne à l'échelle mondiale, mais il peut être remis à zéro localement.
Je n'ai pas testé, mais vous pouvez être en mesure de définir localement, la réinitialisation lorsque vous quittez le
set_time_limit
() ... Le temps passé sur l'activité qui se passe en dehors de l'exécution du script tels que le système des appels à l'aide de system(), le flux d'opérations, les requêtes de base de données, etc. n'est pas inclus dans la détermination du maximum de fois que le script a été en cours d'exécution. Ce n'est pas vrai sur Windows où le temps mesuré est réel.Vous auriez besoin de code que vous-même si vous voulez fonction1 de revenir lorsque le délai est up.
Bien sûr, les "trucs" que vous ne doit être itératif, de sorte que vous pouvez garder le contrôle sur votre temps écoulé et de l'arrêter si nécessaire.
Si vous voulez délai d'exécution d'une fonction arbitraire et d'avoir le contrôle retourné, ce qui n'est pas pris en charge. Si vous avez vraiment besoin pour ce faire, l'ingénieur comme un processus distinct. Vous pouvez ensuite fermer le processus, si il semble être trop long.
Non, il n'est pas possible :
max_execution_time
est utilisé comme une mesure de sécurité, pour éviter d'avoir buggy scripts (comme une boucle infinie) de détruire le serveur ; mais il n'est pas prévu de travailler sur une fonction de l'unité de base.Et le fait qu'il se termine avec une Erreur Fatale est franchement pas agréable pour l'utilisateur de toute façon...
- Je utiliser exec pour exécuter le shell script qui génère de l'exportation de l'application externe. Si le script s'exécute trop longtemps, max_execution_time est atteint et que l'utilisateur ne saura jamais ce qui s'est passé. La Limitation à une telle fonction pourrait m'aider à déterminer si la fin est proche et envoyer quelques convivial erreur.
je ne pense pas que ce soit possible, mais pourquoi voudriez-vous faire cela? Si un script n'est jamais interrompue, je ne pourrait pas faire ce que vous voulez. Ce devrait être plus comme une protection de vous-même (juste au cas où vous téléchargez une boucle sans fin ou quelque chose qui va prendre des heures), mais si votre script prend beaucoup de temps, vous devez lui donner le temps qu'il prend, ou de modifier le script pour qu'il s'exécute plus rapidement (pour certains crons son ok pour prendre un peu de temps, mais si un normal script qui est appelé tout à fait reprend souvent plus de la limite de temps par défaut, vous pourriez faire face à des graves problèmes de performances)