Bonjour à tous,

Dans le ProjectConfiguration.setup() de l'appli, j'ai déclaré des observateurs avec le code habituel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
	$eventDispatcher->connect('view.ads', array('StatsHandler', 'logAdsView'));
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
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__);
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
    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 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() :
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
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
	$connection->setAttribute(Doctrine_Core::ATTR_AUTO_FREE_QUERY_OBJECTS, true);
et je libère mes objets un peu encombrants à chaque tour de boucle à coups de unset().

Si vous avez des idées sur l'un ou l'autre point, je suis preneur