Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 13h25   #1
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 236
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 236
Points : 35
Points : 35
Envoyer un message via MSN à gotcha5832
Par défaut limité durée script, désactivé erreur

Bonjour a tous.

Voila je suis en train de navuger dans mes crawl afin de tracker la moindre erreur.

Le soucis c'est que j'ai une erreur sur la partie backoffice, qui me genere beaucoup d'erreur.

J'aimerai donc que ce message disparaissent. Soit en corigeant l'erreur, soit en ne générant pas d'erreur.

Le script recherche les utilisateur en ligne, le soucis est que cette requete dépasse les 30s.
Du coup ca me génere des erreurs de ce type:
Code :
1
2
3
Tue Feb 07 12:05:18 2012] [warn] [client 2.111.111.111] mod_fcgid: stderr: PHP Fatal error:  Maximum execution time of 30 seconds exceeded in /vdir/mon.site.com/var/www/vhosts/mon.site.com/web/control/whos_online.php on line 123, referer: http://mon.site.com/control/whos_online.php?info=[...]
[Tue Feb 07 12:05:18 2012] [warn] [client 2.111.111.111] mod_fcgid: stderr: PHP Stack trace:, referer: http://mon.site.com/control/whos_online.php?info=[...]
[Tue Feb 07 12:05:18 2012] [warn] [client 2.111.111.111] mod_fcgid: stderr: PHP   1. {main}() /vdir/mon.site.com/var/www/vhosts/mon.site.com/web/control/whos_online.php:0, referer: http://mon.site.com/control/whos_online.php?info=[...
Donc serais t il possible de limité la fonction avant le serveur afin qu'il ne genere pas d'erreur ou n'enregistre pas cette erreur dans les logs?

Merci
gotcha5832 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 13h59   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 678
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 678
Points : 5 425
Points : 5 425
Jette un oeil sur set_time_limit.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 10h31   #3
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 236
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 236
Points : 35
Points : 35
Envoyer un message via MSN à gotcha5832
Je te remercie pour ta réponse.
en effet set_time_limit. me permettra de redefinir la durée limit. de base par le php.in il est limiter a 30s.

Je peut le definir a 15s avec set_time_limit. , mais du coup j'aurais le warning dans les logs a 15s au lieu de 30, mais ne fais pas disparaitre le warning.
gotcha5832 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 10h36   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 678
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 678
Points : 5 425
Points : 5 425
Si ton traitement prend plus de 30s, limiter la durée autorisée à 15s me parait totalement incohérent. Ce que tu veux, c'est autoriser ton traitement à prendre plus de 30s, pas moins. Donc placer la limite à 60 ou 120s...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2012, 08h44   #5
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 236
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 236
Points : 35
Points : 35
Envoyer un message via MSN à gotcha5832
Par défaut set_limit

d'accord j'avais pas compris la réponse.
Je pensais que l'objectif était d'arréter la script avant la limit du php.ini afin de ne pas avoir de message d'erreur.

J'ai donc passer le set_limit a 120, mais j'ai toujours le message d'erreur.

Auriez vous une solution pour pas inscrire cette erreur dans les logs?
gotcha5832 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2012, 19h32   #6
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 738
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 738
Points : 3 310
Points : 3 310
Salut

Citation:
Auriez vous une solution pour pas inscrire cette erreur dans les logs?
Ton insistance sur le fait "de ne plus avoir cette erreur" est assez étrange.
De même que, arrêter un script avant qu'il ne se termine, ça sous-entend que certains traitements ne seront pas effectués.
Ce n'est pas logique non ?

La vrai question qui est à se poser il me semble, c'est pourquoi le traitement est il si long (sous entendu, qu'on soit obligé à repousser cette limite de temps très loin, définir un temps très long).
A partir du moment où on sait où cela a lieu, les solutions ne sont pas loin (théoriquement).

Quand on a une alarme qui sonne (genre sirène d'alarme), quel est le mieux selon toi ?
1/ Débrancher voir arracher le haut parleur ?
2/ Ou chercher l'appareil qui a déclenché cette alarme ? (le détecteur de fumée par exemple)


Mise à part cet aparté ...
Essai de repérer dans ton code qu'est-ce qui provoque cette lenteur, le goulot en quelque sorte.
Si tu as aucun mécanisme te permettant de savoir les temps d'exécutions de certaines parties de code (boucle, requête SQL, instanciation de classe, etc ...) tu peux le faire "à la mano" avec la fonction microtime().
La doc : microtime()
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h05.


 
 
 
 
Partenaires

Hébergement Web