Maximum execution time

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Maximum execution time

PLus simple !

par guigui » 24 août 2005, 10:45

Il faut juste modofier la variable max_execution_time du fichier php.ini qui est initialement a 30s. En mettant 0 le temps max d'écution devient illimité.

par HD » 14 août 2005, 02:56

c'est bon ca marche ! merci bcp

par HD » 13 août 2005, 12:34

ah je viens de remarquer que... j'ai mis le window.location apres le fin du while !!! :oops: c'est pour ca qu'il n'a pas rechargé la page
allez je reteste ca...

par cerber » 13 août 2005, 12:02

fait attention, il ne faut pas tenter plusieurs bouclees en un chargement
ou alors c'est que le probleme est plus grave : un chargement prend plus d'une boucle

par HD » 12 août 2005, 23:07

ca marche pas :(
1
284.30
Fatal error: Maximum execution time of 30 seconds exceeded in c:\program files\easyphp\www\projet1\bourse\03_majcours.php on line 37
pourtant le programme a affiché des donnees qui ne sont calculées qu'à la 66eme ligne (284.30)
=> il a donc deja bouclé la 1ere boucle (le 1 affiché est le id actuel)
=> il n a donc pas rechargé la page

ce que j'avais fait :
<? (...) while ($id<$nbr) {  ...  }
?>
<html>window.location = '<?=$_SERVER['PHP_SELF']."?id=$id" // recharger page avec nouvel ID
?>';</html>
:?: :?:

par HD » 12 août 2005, 22:14

ok merci bcp
je te tiens au courant...

par cerber » 12 août 2005, 13:11

$id= isset($_GET['id'])?$_GET['id']+1:1;
ben là c'est un truc bidon pour calculer le nouvel ID
window.location = '<?=$_SERVER['PHP_SELF']."?id=$id"?>';
et là c'est un morceau de code qui va recharger la page en lui passant le nouvel ID calculé plus haut
=> quand tu réceptionne la page t'a qu'a regarder l'ID pour savoir où il faut continuer

Dans mon idée, tu n'a plus de boucle, mais tant que tu as des traitements à effectuer tu affiche le bout de code qui recharge la page => tu as 30 secondes pour chaque itération puisque le serveur voit chaque itération comme une nouvelle page

par HD » 12 août 2005, 12:57

stp tu peux commenter
$id= isset($_GET['id'])?$_GET['id']+1:1;
et
window.location = '<?=$_SERVER['PHP_SELF']."?id=$id"?>';
mci

par cerber » 12 août 2005, 11:56

il continue, sinon ce serait trop simple ;)
En fait cette sécurité permet au serveur de ne pas se focaliser sur un client
=>
solution :
<?
//.... ton code de boucle .....
$id= isset($_GET['id'])?$_GET['id']+1:1;
?><html>
<head></head>
<body>
  <script language="javascript">
    window.location = '<?=$_SERVER['PHP_SELF']."?id=$id"?>';
  </script>
</body>
</html>

par HD » 12 août 2005, 11:33

et ca dit
Notez que set_time_limit() n'a pas d'effet lorsque PHP fonctionne en mode safe mode. Il n'y a pas d'autre solution que de changer de mode, ou de modifier la durée maximale d'exécution dans le php.ini.
c'est comment chez la majorité des hebergeurs ?

pour cerber : à la fin de chaque boucle $id est augmentee de 1 donc on peut savoir où on s'est arreté. reste à savoir ce qu'il faut faire apres pour reprendre la boucle en evitant le probleme de temps

ps: si je fais un include, le "chrono" repart à 0 ou continue ?

par cerber » 12 août 2005, 09:51

oui, mais :
  • il faut avoir un client connecté au site lors de l'exécution des boucles
  • il faut que ta position dans les boucle soit prévisible ou alors qu'on puisse sauvegarder l'état des boucles
ensuite c'est qu'une histoire de javascript

J'ai le bout de code si il faut

par Elie » 12 août 2005, 09:45

Maximum execution time

par HD » 12 août 2005, 03:13

salut
j'ai un programme composé d'une boucle
while ($id<$nbr) {
qui execute tellement de requetes externes, recuperations de pages web aux 4coins du net, edition,... qu'au bout de 2 executions de cette boucle j'ai
Fatal error: Maximum execution time of 30 seconds exceeded in c:\program files\easyphp\www\projet1\bourse\03_majcours.php on line 36
sachant que :
- je ne veux pas toucher au contenu de la boucle (non negociable :lol: )
- et que je ne veux pas modifier le serveur php (pour avoir un code qui s'execute COMPLETEMENT meme dans les serveurs limités à30secondes

y a t il une solution ? merci