Memory get usage

Signaler
Messages postés
20
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
4 janvier 2009
-
Messages postés
20
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
4 janvier 2009
-
Bonjour,

J'ai un problème de fuite !!

J'ai un script PHP qui tourne en fond sans Firefox (php5 monscript.php). Il récupère des fichiers sur d'autres machines et il insere des valeurs dans une base de données MySQL toutes les 7 secondes.

La fonction Memory_get_usage me donne une valeur qui croit avec le temps et fini par passer en négatif (signification ????)

Et ce que cette fonction est sérieuse ?

Mon script finit par s'arrêter tout seul sans aucun message d'erreur, ni à l'écran, ni dans les logs, ni dans mon système de gestion d'erreurs (try, catch + log).

Il y a plusieurs jour que je cherche, mais rien !!

Est ce quelqu'un aurait une idée ?

Merci

FAB (On ne peut pas aller au delà des choix qu'on ne comprend pas)

8 réponses

Messages postés
38
Date d'inscription
jeudi 8 novembre 2007
Statut
Membre
Dernière intervention
25 avril 2008

Ta valeur qui croit et qui passe en négatif est surement du a un overflow.
Pour taider il nous faudrai voir ton script
Messages postés
20
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
4 janvier 2009

Oui, il y a plusieurs pages de code !

Le script principal ressemble à ça :

while (1) {

    $machine1 = new tp_test();
    if (info_machine ($machine1)){
        filtre ($machine1->destination_file);
    }
    $machine2 = new mdt_test();
    if (info_machine ($machine2)){
        filtre ($machine2->destination_file);
    }
    $machine3 = new xls_guard();
    if (info_machine ($machine3)){
        filtre ($machine3->destination_file);
    }
    $machine4 = new hub_test();
    infos_reseau($machine4);
    infos_reseau($machine1);
    infos_reseau($machine2);
    infos_reseau($machine3);
    
    sleep (7);
    unset ($machine1);
    unset ($machine2);
    unset ($machine3);
    unset ($machine4);
}

?>


Je pense qu'il faudrait la totalité mais trop de ligne !!

FAB (On ne peut pas aller au delà des choix qu'on ne comprend pas)
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
faut croire que php gere mal la memoire :)

a mon avis, t'y peux pas grand chose (sauf si t'as des sock qui sont ouvert, mais pas clos, ou des trucs du genre)
Messages postés
20
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
4 janvier 2009

Et simplement la réponse négative de Memory_get_usage () c'est pas documenté, peut-être que quelqu'un connait ?

Merci

FAB (On ne peut pas aller au delà des choix qu'on ne comprend pas)
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

quelle version de PHP 5 ?
Messages postés
20
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
4 janvier 2009

D'après phpinfo : PHP Version 5.2.0-8+etch10




A-t-elle un soucis cette version ?




Merci





FAB (On ne peut pas aller au delà des choix qu'on ne comprend pas)
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
La valeur négative dans memory_get_usage() a été corrigée avec php 5.2.1
Néanmoins, je ne pense pas que ça ait un rapport direct avec ton problème.
A mon avis, ton script s'arrête à caused'un timeout() OU d'un trop plein de mémoire utilisée en effet (mais aucun rapport avec la valeur négative qui n'était, semble t il, qu'un problème de calcul).
Tu devrais voir ou tu peux optimiser ton code (il y a toujours moyen, surtout sur un long code). Vérifie aussi que tu es bien en error_reporting(E_ALL).
Enfin, puisque tu n'as rien d'affiché, logge les actions dans un fichier (avec la ligne évidemment, et un descriptif de ce que tu fais à ce moment là) : tu verras au moins où s'arrête ton script.
Messages postés
20
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
4 janvier 2009

Oui j'avais eu l'idée, et j'ai écrit un système poussé de gestion des erreurs, j'ai error_reporting(E_ALL), et un fichier log juste pour mon script.

Cette nuit !! je me disais : pour faire tourner mon script sans explorateur j'ustilise PHP5-CLI ! C'est surement different de PHP5 utilisé avec l'explorer.

J'ai décidé de faire tourner le script sur une autre machine pour comparer ? On vera

Merci

FAB (On ne peut pas aller au delà des choix qu'on ne comprend pas)