Perform\MailingListBundle\SubscriberManager is used to save
new subscribers into your mailing list software.
It uses connectors to link to different mailing lists, and enrichers to add subscriber metadata that exists in data you may have about the subscriber already.
It takes instances of
and persists them in a database queue table.
Then at an arbitrary point, the manager is flushed.
This will enrich the new subscribers before passing them onto the
relevant connector and deleting them from the queue.
addSubscriber() method to add a new subscriber to the queue.
<?php $subscriber = new Subscriber(); $subscriber->setEmail('email@example.com'); $subscriber->setList('my_list'); // an id referencing the list in the mailing list software // more attributes about the subscriber $subscriber->setAttributes(['more_data' => 'more_values', 'is_customer' => true]); $subscriber->setAttribute('some_meta_data', 'value'); $manager->addSubscriber($subscriber);
flush() method to process the subscribers currently known to the manager.
It will take each subscriber, pass it to the connector, and then delete it from the queue table.
The subscriber manager can only flush subscribers that are added in the current request or process.
processQueue() method can be used to load subscribers into memory again from the queue table.
Since connectors are likely to make network calls to other apps and APIs, it is wise to process new subscribers outwith a normal web request.
The bundle includes an event listener that will call
flush() on the
kernel.terminate event, which will fire after the response is sent to the browser if you use the fastcgi PHP runtime.
Alternatively, you may wish to process the queue in a different process.
perform:mailing-list:process-queue console command will load and flush subscribers in batches.
--batch-size option to configure the size of these batches to work with your memory requirements.