Problem with my SendListener plugin
Posted: Thu Jun 03, 2010 3:01 am
Hello everybody,
I have a little problem with a class I coded by myself as a plugin. Here is the code.
My problem is that my final logs look like that :
[text]
- Started script; 02/06/2010 - 11:00:02
- Started sending: 02/06/2010 - 11:00:02
- Percents step: 1% (200 mails sent, 02/06/2010 - 11:04:42)
- Percents step: 2% (400 mails sent, 02/06/2010 - 11:09:13)
- Percents step: 3% (600 mails sent, 02/06/2010 - 11:13:44)
- Percents step: 4% (800 mails sent, 02/06/2010 - 11:19:42)
- Percents step: 5% (1000 mails sent, 02/06/2010 - 11:24:15)
- Percents step: 6% (1200 mails sent, 02/06/2010 - 11:28:43)
- Percents step: 7% (1400 mails sent, 02/06/2010 - 11:33:20)
- Percents step: 8% (1600 mails sent, 02/06/2010 - 11:37:45)
- Percents step: 9% (1800 mails sent, 02/06/2010 - 11:42:19)
- Percents step: 10% (2000 mails sent, 02/06/2010 - 11:46:52)
- Percents step: 11% (2200 mails sent, 02/06/2010 - 11:51:14)
- Percents step: 12% (2400 mails sent, 02/06/2010 - 11:55:37)
- Percents step: 13% (2600 mails sent, 02/06/2010 - 11:59:59)
- Percents step: 14% (2800 mails sent, 02/06/2010 - 12:04:35)
- Percents step: 15% (3000 mails sent, 02/06/2010 - 12:08:56)
- Percents step: 16% (3200 mails sent, 02/06/2010 - 12:13:17)
- Percents step: 17% (3400 mails sent, 02/06/2010 - 12:17:35)
- Percents step: 18% (3600 mails sent, 02/06/2010 - 12:21:53)
- Percents step: 19% (3800 mails sent, 02/06/2010 - 12:26:10)
- Percents step: 20% (4000 mails sent, 02/06/2010 - 12:30:28)
- Percents step: 21% (4200 mails sent, 02/06/2010 - 12:34:42)
- Percents step: 22% (4400 mails sent, 02/06/2010 - 12:39:01)
- Percents step: 23% (4600 mails sent, 02/06/2010 - 12:43:14)
- Percents step: 24% (4800 mails sent, 02/06/2010 - 12:47:36)
- Percents step: 25% (5000 mails sent, 02/06/2010 - 12:51:50)
- Percents step: 26% (5200 mails sent, 02/06/2010 - 12:56:05)
- Percents step: 27% (5400 mails sent, 02/06/2010 - 13:00:19)
- Percents step: 28% (5600 mails sent, 02/06/2010 - 13:04:36)
- Percents step: 29% (5800 mails sent, 02/06/2010 - 13:09:00)
- Percents step: 30% (6000 mails sent, 02/06/2010 - 13:13:47)
- Percents step: 31% (6200 mails sent, 02/06/2010 - 13:19:17)
- Percents step: 32% (6400 mails sent, 02/06/2010 - 13:23:36)
- Percents step: 33% (6600 mails sent, 02/06/2010 - 13:28:22)
- Percents step: 34% (6800 mails sent, 02/06/2010 - 13:32:53)
- Percents step: 35% (7000 mails sent, 02/06/2010 - 13:37:24)
- Percents step: 36% (7200 mails sent, 02/06/2010 - 13:41:51)
- Percents step: 37% (7400 mails sent, 02/06/2010 - 13:46:35)
- Percents step: 38% (7600 mails sent, 02/06/2010 - 13:51:07)
- Percents step: 39% (7800 mails sent, 02/06/2010 - 13:55:34)
- Percents step: 40% (8000 mails sent, 02/06/2010 - 13:59:57)
- Percents step: 41% (8200 mails sent, 02/06/2010 - 14:04:43)
- Percents step: 42% (8400 mails sent, 02/06/2010 - 14:09:13)
- Percents step: 43% (8600 mails sent, 02/06/2010 - 14:13:55)
- Percents step: 44% (8800 mails sent, 02/06/2010 - 14:18:34)
- Percents step: 45% (9000 mails sent, 02/06/2010 - 14:23:04)
- Percents step: 46% (9200 mails sent, 02/06/2010 - 14:27:29)
- Percents step: 47% (9400 mails sent, 02/06/2010 - 14:31:49)
- Percents step: 48% (9600 mails sent, 02/06/2010 - 14:36:21)
- Percents step: 49% (9800 mails sent, 02/06/2010 - 14:40:57)
- Percents step: 50% (10000 mails sent, 02/06/2010 - 14:46:01)
- Percents step: 51% (10200 mails sent, 02/06/2010 - 14:50:52)
- Percents step: 52% (10400 mails sent, 02/06/2010 - 14:55:26)
- Percents step: 53% (10600 mails sent, 02/06/2010 - 14:59:53)
- Percents step: 54% (10800 mails sent, 02/06/2010 - 15:04:22)
- Percents step: 55% (11000 mails sent, 02/06/2010 - 15:08:52)
- Percents step: 56% (11200 mails sent, 02/06/2010 - 15:13:13)
- Percents step: 57% (11400 mails sent, 02/06/2010 - 15:18:13)
- Percents step: 58% (11600 mails sent, 02/06/2010 - 15:23:22)
- Percents step: 59% (11800 mails sent, 02/06/2010 - 15:28:25)
- Percents step: 60% (12000 mails sent, 02/06/2010 - 15:34:31)
- Percents step: 61% (12200 mails sent, 02/06/2010 - 15:39:49)
- Percents step: 62% (12400 mails sent, 02/06/2010 - 15:44:35)
- Percents step: 63% (12600 mails sent, 02/06/2010 - 15:49:06)
- Percents step: 64% (12800 mails sent, 02/06/2010 - 15:53:30)
- Percents step: 65% (13000 mails sent, 02/06/2010 - 15:58:05)
- Percents step: 66% (13200 mails sent, 02/06/2010 - 16:03:16)
- Percents step: 67% (13400 mails sent, 02/06/2010 - 16:07:44)
- Percents step: 68% (13600 mails sent, 02/06/2010 - 16:11:58)
- Percents step: 69% (13800 mails sent, 02/06/2010 - 16:16:20)
- Percents step: 70% (14000 mails sent, 02/06/2010 - 16:20:46)
- Percents step: 71% (14200 mails sent, 02/06/2010 - 16:25:15)
- Percents step: 72% (14400 mails sent, 02/06/2010 - 16:29:38)
- Percents step: 73% (14600 mails sent, 02/06/2010 - 16:33:59)
- Percents step: 74% (14800 mails sent, 02/06/2010 - 16:38:54)
- Percents step: 75% (15000 mails sent, 02/06/2010 - 16:44:01)
- Percents step: 76% (15200 mails sent, 02/06/2010 - 16:48:30)
- Percents step: 77% (15400 mails sent, 02/06/2010 - 16:53:11)
- Percents step: 78% (15600 mails sent, 02/06/2010 - 16:57:40)
- Percents step: 79% (15800 mails sent, 02/06/2010 - 17:02:01)
- Percents step: 80% (16000 mails sent, 02/06/2010 - 17:06:31)
- Percents step: 81% (16200 mails sent, 02/06/2010 - 17:11:14)
- Percents step: 82% (16400 mails sent, 02/06/2010 - 17:16:02)
- Percents step: 83% (16600 mails sent, 02/06/2010 - 17:20:35)
- Percents step: 84% (16800 mails sent, 02/06/2010 - 17:25:04)
- Percents step: 85% (17000 mails sent, 02/06/2010 - 17:29:36)
- Percents step: 86% (17200 mails sent, 02/06/2010 - 17:34:19)
- Percents step: 87% (17400 mails sent, 02/06/2010 - 17:40:17)
- Percents step: 88% (17600 mails sent, 02/06/2010 - 17:44:37)
- Percents step: 89% (17800 mails sent, 02/06/2010 - 17:48:57)
- Percents step: 90% (18000 mails sent, 02/06/2010 - 17:53:12)
- Percents step: 91% (18200 mails sent, 02/06/2010 - 17:57:25)
- Percents step: 92% (18400 mails sent, 02/06/2010 - 18:02:05)
- Percents step: 93% (18600 mails sent, 02/06/2010 - 18:06:41)
- Percents step: 94% (18800 mails sent, 02/06/2010 - 18:11:00)
- Percents step: 95% (19000 mails sent, 02/06/2010 - 18:15:18)
- Percents step: 96% (19200 mails sent, 02/06/2010 - 18:19:44)
- Percents step: 97% (19400 mails sent, 02/06/2010 - 18:24:03)
- Percents step: 98% (19600 mails sent, 02/06/2010 - 18:28:18)
- Percents step: 99% (19800 mails sent, 02/06/2010 - 18:32:32)
- Sending duration: 7 heures 32 minutes 56 secondes
- Sending results: 99% (19800/20000)
- Finished script; 02/06/2010 - 18:32:59
- Script duration: 7 heures 32 minutes 57 secondes
[/text]
But the 20,000 mails have been receipt well...
I think my plugin hasn't been called everytime because of the AntiFlood plugin, cause when I disables it, it works well. Plus, the number of calls that failed are equally to the number of waits the AntiFlood plugin has to do. For this example, the wait is executed every 100 mails, so 200 times. And that's the number of calls that failed.
Here is the plugins configuration :
I can't afford to loose some calls, and I absolutly need to do some callback stuff in a database after each mail sending... And if I disables the AntiFlood plugin when I send huge amounts of mails, I get a SMTP Timeout error...
So... do you have any idea where can it come ?
Thank you very much for your concern.
Cordially, gnutix.
Edit: I made a new test with the $mailer->register of my plugin before the AntiFlood plugin... and it seems to get better. I will keep you informed of my next tests...
I have a little problem with a class I coded by myself as a plugin. Here is the code.
Code: Select all
class sendingPercents implements Swift_Events_SendListener {
/**#@+
* @var int
* @access private
*/
private $logsPercentsRatio = 10;
private $logsPercents = 0;
private $percents = 0;
private $sended = 0;
private $total = 0;
/**#@-*/
/**
* Invoked at instantiation
*
* @param int $total
* @return void
*/
public function __construct($total) {
// Total number of mails to send
$this->total = $total;
// We define the range of percents to display in the logs
if ($this->total >= 100 && $this->total < 1000) {
$this->logsPercentsRatio = 10;
} else if ($this->total >= 1000 && $this->total < 10000) {
$this->logsPercentsRatio = 5;
} else if ($this->total >= 10000 && $this->total < 20000) {
$this->logsPercentsRatio = 2;
} else if ($this->total >= 20000) {
$this->logsPercentsRatio = 1;
}
}
/**
* Invoked immediately before the Message is sent.
* @param Swift_Events_SendEvent $evt
*/
public function beforeSendPerformed(Swift_Events_SendEvent $evt) {}
/**
* Invoked immediately after the Message is sent.
* @param Swift_Events_SendEvent $evt
*/
public function sendPerformed(Swift_Events_SendEvent $evt) {
// We increment the number of mails that have been sent
$this->sended++;
// We define the sending percents
$this->percents = ($this->sended * 100) / $this->total;
// We round it to the bottom
$flooredPercents = floor($this->percents);
// We get the percents to display in the logs
$newlogsPercents = ($flooredPercents - ($flooredPercents % $this->logsPercentsRatio));
// We check the logs percents has changed
if ($this->logsPercents != $newlogsPercents) {
// We update the logs percents
$this->logsPercents = $newlogsPercents;
// We add the logs (addLog() is just a function that put a message in a file)
addLog(' - Percents step:'."\t".$this->logsPercents.'% ('.$this->sended.' mails sent, '.date('d/m/Y - H:i:s', time()).')'."\n");
}
}
}
[text]
- Started script; 02/06/2010 - 11:00:02
- Started sending: 02/06/2010 - 11:00:02
- Percents step: 1% (200 mails sent, 02/06/2010 - 11:04:42)
- Percents step: 2% (400 mails sent, 02/06/2010 - 11:09:13)
- Percents step: 3% (600 mails sent, 02/06/2010 - 11:13:44)
- Percents step: 4% (800 mails sent, 02/06/2010 - 11:19:42)
- Percents step: 5% (1000 mails sent, 02/06/2010 - 11:24:15)
- Percents step: 6% (1200 mails sent, 02/06/2010 - 11:28:43)
- Percents step: 7% (1400 mails sent, 02/06/2010 - 11:33:20)
- Percents step: 8% (1600 mails sent, 02/06/2010 - 11:37:45)
- Percents step: 9% (1800 mails sent, 02/06/2010 - 11:42:19)
- Percents step: 10% (2000 mails sent, 02/06/2010 - 11:46:52)
- Percents step: 11% (2200 mails sent, 02/06/2010 - 11:51:14)
- Percents step: 12% (2400 mails sent, 02/06/2010 - 11:55:37)
- Percents step: 13% (2600 mails sent, 02/06/2010 - 11:59:59)
- Percents step: 14% (2800 mails sent, 02/06/2010 - 12:04:35)
- Percents step: 15% (3000 mails sent, 02/06/2010 - 12:08:56)
- Percents step: 16% (3200 mails sent, 02/06/2010 - 12:13:17)
- Percents step: 17% (3400 mails sent, 02/06/2010 - 12:17:35)
- Percents step: 18% (3600 mails sent, 02/06/2010 - 12:21:53)
- Percents step: 19% (3800 mails sent, 02/06/2010 - 12:26:10)
- Percents step: 20% (4000 mails sent, 02/06/2010 - 12:30:28)
- Percents step: 21% (4200 mails sent, 02/06/2010 - 12:34:42)
- Percents step: 22% (4400 mails sent, 02/06/2010 - 12:39:01)
- Percents step: 23% (4600 mails sent, 02/06/2010 - 12:43:14)
- Percents step: 24% (4800 mails sent, 02/06/2010 - 12:47:36)
- Percents step: 25% (5000 mails sent, 02/06/2010 - 12:51:50)
- Percents step: 26% (5200 mails sent, 02/06/2010 - 12:56:05)
- Percents step: 27% (5400 mails sent, 02/06/2010 - 13:00:19)
- Percents step: 28% (5600 mails sent, 02/06/2010 - 13:04:36)
- Percents step: 29% (5800 mails sent, 02/06/2010 - 13:09:00)
- Percents step: 30% (6000 mails sent, 02/06/2010 - 13:13:47)
- Percents step: 31% (6200 mails sent, 02/06/2010 - 13:19:17)
- Percents step: 32% (6400 mails sent, 02/06/2010 - 13:23:36)
- Percents step: 33% (6600 mails sent, 02/06/2010 - 13:28:22)
- Percents step: 34% (6800 mails sent, 02/06/2010 - 13:32:53)
- Percents step: 35% (7000 mails sent, 02/06/2010 - 13:37:24)
- Percents step: 36% (7200 mails sent, 02/06/2010 - 13:41:51)
- Percents step: 37% (7400 mails sent, 02/06/2010 - 13:46:35)
- Percents step: 38% (7600 mails sent, 02/06/2010 - 13:51:07)
- Percents step: 39% (7800 mails sent, 02/06/2010 - 13:55:34)
- Percents step: 40% (8000 mails sent, 02/06/2010 - 13:59:57)
- Percents step: 41% (8200 mails sent, 02/06/2010 - 14:04:43)
- Percents step: 42% (8400 mails sent, 02/06/2010 - 14:09:13)
- Percents step: 43% (8600 mails sent, 02/06/2010 - 14:13:55)
- Percents step: 44% (8800 mails sent, 02/06/2010 - 14:18:34)
- Percents step: 45% (9000 mails sent, 02/06/2010 - 14:23:04)
- Percents step: 46% (9200 mails sent, 02/06/2010 - 14:27:29)
- Percents step: 47% (9400 mails sent, 02/06/2010 - 14:31:49)
- Percents step: 48% (9600 mails sent, 02/06/2010 - 14:36:21)
- Percents step: 49% (9800 mails sent, 02/06/2010 - 14:40:57)
- Percents step: 50% (10000 mails sent, 02/06/2010 - 14:46:01)
- Percents step: 51% (10200 mails sent, 02/06/2010 - 14:50:52)
- Percents step: 52% (10400 mails sent, 02/06/2010 - 14:55:26)
- Percents step: 53% (10600 mails sent, 02/06/2010 - 14:59:53)
- Percents step: 54% (10800 mails sent, 02/06/2010 - 15:04:22)
- Percents step: 55% (11000 mails sent, 02/06/2010 - 15:08:52)
- Percents step: 56% (11200 mails sent, 02/06/2010 - 15:13:13)
- Percents step: 57% (11400 mails sent, 02/06/2010 - 15:18:13)
- Percents step: 58% (11600 mails sent, 02/06/2010 - 15:23:22)
- Percents step: 59% (11800 mails sent, 02/06/2010 - 15:28:25)
- Percents step: 60% (12000 mails sent, 02/06/2010 - 15:34:31)
- Percents step: 61% (12200 mails sent, 02/06/2010 - 15:39:49)
- Percents step: 62% (12400 mails sent, 02/06/2010 - 15:44:35)
- Percents step: 63% (12600 mails sent, 02/06/2010 - 15:49:06)
- Percents step: 64% (12800 mails sent, 02/06/2010 - 15:53:30)
- Percents step: 65% (13000 mails sent, 02/06/2010 - 15:58:05)
- Percents step: 66% (13200 mails sent, 02/06/2010 - 16:03:16)
- Percents step: 67% (13400 mails sent, 02/06/2010 - 16:07:44)
- Percents step: 68% (13600 mails sent, 02/06/2010 - 16:11:58)
- Percents step: 69% (13800 mails sent, 02/06/2010 - 16:16:20)
- Percents step: 70% (14000 mails sent, 02/06/2010 - 16:20:46)
- Percents step: 71% (14200 mails sent, 02/06/2010 - 16:25:15)
- Percents step: 72% (14400 mails sent, 02/06/2010 - 16:29:38)
- Percents step: 73% (14600 mails sent, 02/06/2010 - 16:33:59)
- Percents step: 74% (14800 mails sent, 02/06/2010 - 16:38:54)
- Percents step: 75% (15000 mails sent, 02/06/2010 - 16:44:01)
- Percents step: 76% (15200 mails sent, 02/06/2010 - 16:48:30)
- Percents step: 77% (15400 mails sent, 02/06/2010 - 16:53:11)
- Percents step: 78% (15600 mails sent, 02/06/2010 - 16:57:40)
- Percents step: 79% (15800 mails sent, 02/06/2010 - 17:02:01)
- Percents step: 80% (16000 mails sent, 02/06/2010 - 17:06:31)
- Percents step: 81% (16200 mails sent, 02/06/2010 - 17:11:14)
- Percents step: 82% (16400 mails sent, 02/06/2010 - 17:16:02)
- Percents step: 83% (16600 mails sent, 02/06/2010 - 17:20:35)
- Percents step: 84% (16800 mails sent, 02/06/2010 - 17:25:04)
- Percents step: 85% (17000 mails sent, 02/06/2010 - 17:29:36)
- Percents step: 86% (17200 mails sent, 02/06/2010 - 17:34:19)
- Percents step: 87% (17400 mails sent, 02/06/2010 - 17:40:17)
- Percents step: 88% (17600 mails sent, 02/06/2010 - 17:44:37)
- Percents step: 89% (17800 mails sent, 02/06/2010 - 17:48:57)
- Percents step: 90% (18000 mails sent, 02/06/2010 - 17:53:12)
- Percents step: 91% (18200 mails sent, 02/06/2010 - 17:57:25)
- Percents step: 92% (18400 mails sent, 02/06/2010 - 18:02:05)
- Percents step: 93% (18600 mails sent, 02/06/2010 - 18:06:41)
- Percents step: 94% (18800 mails sent, 02/06/2010 - 18:11:00)
- Percents step: 95% (19000 mails sent, 02/06/2010 - 18:15:18)
- Percents step: 96% (19200 mails sent, 02/06/2010 - 18:19:44)
- Percents step: 97% (19400 mails sent, 02/06/2010 - 18:24:03)
- Percents step: 98% (19600 mails sent, 02/06/2010 - 18:28:18)
- Percents step: 99% (19800 mails sent, 02/06/2010 - 18:32:32)
- Sending duration: 7 heures 32 minutes 56 secondes
- Sending results: 99% (19800/20000)
- Finished script; 02/06/2010 - 18:32:59
- Script duration: 7 heures 32 minutes 57 secondes
[/text]
But the 20,000 mails have been receipt well...
I think my plugin hasn't been called everytime because of the AntiFlood plugin, cause when I disables it, it works well. Plus, the number of calls that failed are equally to the number of waits the AntiFlood plugin has to do. For this example, the wait is executed every 100 mails, so 200 times. And that's the number of calls that failed.
Here is the plugins configuration :
Code: Select all
$mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(100, 20));
$mailer->registerPlugin(new sendingPercents(20000));
So... do you have any idea where can it come ?
Thank you very much for your concern.
Cordially, gnutix.
Edit: I made a new test with the $mailer->register of my plugin before the AntiFlood plugin... and it seems to get better. I will keep you informed of my next tests...