Bonjour à tous,
Dans le ProjectConfiguration.setup() de l'appli, j'ai déclaré des observateurs avec le code habituel :
Je teste l'un des fichiers lançant cet évenement. La notification est envoyée dans un bout de code compris dans une boucle. J'ai des traces de log juste derrière. Le bout de code (sans la boucle) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $eventDispatcher->connect('view.ads', array('StatsHandler', 'logAdsView'));
La réception de la notification dans mon observateur est pistée elle aussi dans les logs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 sfContext::getInstance()->getEventDispatcher()->notify(new sfEvent(get_class($this), 'view.ads', array( 'subject' => $ads, 'context' => StatsHandler::CONTEXT_MAIL, 'source' => __METHOD__ . ' ligne ' . __LINE__, )) ); nvLogger::err(memory_get_usage(true), __FILE__, __LINE__, __METHOD__);
Pb 1 : Je m'attends donc à avoir dans mes logs une trace de l'appel à logAdsView() et une trace du memory_get_usage par tour de boucle. Or, j'ai DEUX traces de l'appel à logAdsView() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public static function logAdsView(sfEvent $event) { $context = $event['context']; if ($context == self::CONTEXT_MAIL) { nvLogger::err("sfevent " . $event['source'], __FILE__, __LINE__, __METHOD__); } else { nvLogger::debug("sfevent", __FILE__, __LINE__, __METHOD__); } }
Pb 2 : comme vous le voyez aux traces du memory_get_usage(), la mémoire allouée s'accumule et finit par provoquer une erreur d'allocation. Pourtant, j'ai paramétré la connexion Doctrine :aoû 22 08:36:30 symfony [err] /home/ohmimmob/apps/frontend/lib/StatsHandler.class.php - 36 - StatsHandler::logAdsView ->
sfevent ohmSendEmailAlertTask::execute ligne 184
aoû 22 08:36:30 symfony [err] /home/ohmimmob/apps/frontend/lib/StatsHandler.class.php - 36 - StatsHandler::logAdsView ->
sfevent ohmSendEmailAlertTask::execute ligne 184
aoû 22 08:36:30 symfony [err] /home/ohmimmob/lib/task/ohmSendEmailAlertTask.class.php - 187 - ohmSendEmailAlertTask::execute ->
284164096
aoû 22 08:36:33 symfony [err] /home/ohmimmob/apps/frontend/lib/StatsHandler.class.php - 36 - StatsHandler::logAdsView ->
sfevent ohmSendEmailAlertTask::execute ligne 184
aoû 22 08:36:33 symfony [err] /home/ohmimmob/apps/frontend/lib/StatsHandler.class.php - 36 - StatsHandler::logAdsView ->
sfevent ohmSendEmailAlertTask::execute ligne 184
aoû 22 08:36:33 symfony [err] /home/ohmimmob/lib/task/ohmSendEmailAlertTask.class.php - 187 - ohmSendEmailAlertTask::execute ->
300679168
et je libère mes objets un peu encombrants à chaque tour de boucle à coups de unset().
Code : Sélectionner tout - Visualiser dans une fenêtre à part $connection->setAttribute(Doctrine_Core::ATTR_AUTO_FREE_QUERY_OBJECTS, true);
Si vous avez des idées sur l'un ou l'autre point, je suis preneur![]()
Partager