Dans la programmation PHP, le temps d'exécution du script est limité et par défaut, le temps d'exécution du script est généralement de 30 secondes. Si le temps d'exécution du script dépasse la limite, PHP terminera automatiquement le script et lancera une erreur de délai d'expiration. Pour éviter cela, PHP fournit la fonction set_time_limit () , nous permettant de définir manuellement le temps d'exécution maximal du script, afin de garantir que les tâches de longue durée peuvent être terminées en douceur.
set_time_limit () est une fonction intégrée en PHP qui définit le nombre maximum de secondes autorisées à exécuter dans le script actuel. Après avoir appelé cette fonction, PHP réinitialise le temporisateur et les re-temps de l'appel.
La définition de la fonction est la suivante:
set_time_limit(int $seconds): bool
Le paramètre $ secondes indique le nombre de secondes autorisées à exécuter le script. S'il est défini sur 0, cela signifie aucune limite et le script ne sera pas résilié en raison du temps d'exécution long.
La valeur de retour est de type booléen, renvoie true lorsqu'il est réussi et faux en cas d'échec.
Réinitialisation du temporisateur : chaque appel réinitialise le temps maximal du temps d'exécution du script.
Efficace uniquement en mode non-sécurité : si PHP s'exécute en mode sans échec (Safe_Mode), set_time_limit () n'est pas valide.
Mode CLI : En mode ligne de commande, il n'y a généralement pas de limite de temps, et set_time_limit () ne l'affectera pas.
Utilisé avec max_execution_time dans php.ini : le temps d'exécution maximum par défaut est de 30 secondes, et vous pouvez le remplacer avec set_time_limit () .
Voici plusieurs exemples pour démontrer l'utilisation commune de set_time_limit () .
En supposant qu'une tâche qui prend 60 secondes doit être exécutée, les 30 secondes par défaut seront sorties:
<?php
// Définissez le temps d'exécution maximum sur 90 Deuxième
set_time_limit(90);
echo "Commencez à exécuter des tâches longues...\n";
for ($i = 0; $i < 60; $i++) {
sleep(1); // Opération de temps de simulation
echo "Exécuté {$i} Deuxième\n";
}
echo "La tâche est terminée。\n";
?>
Dans cet exemple, après avoir appelé set_time_limit (90) , le script permet une exécution maximale de 90 secondes et ne sera pas terminée aux 30 secondes par défaut.
Certaines tâches ont un temps d'exécution incertain et n'ont pas besoin d'être limitées par le délai d'expiration:
<?php
// Annuler la limite de temps d'exécution
set_time_limit(0);
while (true) {
// Voici le code qui doit être exécuté en continu
echo "Le script s'exécute en continu...\n";
sleep(5);
}
?>
Le script ne sera pas obligé de se terminer en raison d'un temps d'exécution excessif.
Lorsque vous accédez à une interface distante, le délai d'expiration de la demande peut se produire en raison du retard du réseau. Nous pouvons prolonger le temps d'exécution du script pour nous assurer que la demande peut être terminée.
<?php
// Prolonger le temps d'exécution maximal du script
set_time_limit(120);
$url = "https://gitbox.net/api/data";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
} else {
echo "Demander le résultat:" . $response;
}
curl_close($ch);
?>
Ici https://gitbox.net/api/data est l'adresse de demande dans l'exemple, et set_time_limit (120) garantit que le script a suffisamment de temps pour attendre la réponse.
set_time_limit () est une fonction importante qui contrôle le temps d'exécution maximum des scripts PHP.
Utilisez cette fonction raisonnablement pour éviter les délais d'attente de script provoquant une interruption de la tâche, en particulier lors de l'exécution des opérations longues.
Notez que le temps d'exécution du script ne peut pas être illimité pour éviter de gaspiller les ressources du serveur.
Lors de la combinaison de tâches longues telles que les demandes de réseau et le traitement de fichiers, il est de la meilleure pratique de définir le temps d'exécution de manière appropriée.
En maîtrisant l'utilisation de set_time_limit () , les scripts PHP peuvent être rendus plus stables et efficaces, réduisant les problèmes causés par les erreurs de délai de temps.