PHP - огромный массив и циклический оператор - PullRequest
3 голосов
/ 28 июня 2011

У меня есть старый список адресов электронной почты клиентов (около 1100 писем), и я хотел бы отправить их всем по электронной почте. Этот список находится в гигантском массиве php.

Я использую sendgrid, и у них есть хороший php howto, расположенный здесь: http://sendgrid.com/documentation/display/api/SMTPPHPExample

Я использую их код и в одном разделе они имеют:

$toList = array('destination1@example.com', 'destination2@example.com');

Теперь, чтобы не переполнять серверы sendgrids и не попадать в спам-фильтры, я хотел бы отправлять только 100 пакетов электронной почты за раз, как я могу получить 100 электронных писем из моего большого массива, поместить их в этот массив, выполнить через Войдите в систему sendgrid, отправьте электронное письмо, затем вернитесь назад, возьмите следующие 100 и снова запустите цикл.

Я не слишком разбираюсь в php, поэтому понятия не имею, как настроить этот цикл.

Большое спасибо за любую помощь !!

Ответы [ 2 ]

4 голосов
/ 28 июня 2011

Я думаю, вы говорите о array array_chunk ( array $input , int $size[, bool $preserve_keys = false ] ). Он разбивает массив и массив меньших массивов на основе значения в $ size.

2 голосов
/ 28 июня 2011
> Now, to not overflow sendgrids servers
> or get caught in spam filters I would
> like to only send batches of 100
> emails at a time, how can I grab 100
> emails from my big array, put them
> into this array, run through the
> sendgrid login, send email, then go
> back, grab the next 100 and run the
> loop again.

Как и другие пользователи сказали в комментариях, я не думаю, что вам следует беспокоиться о переполнении sendgrid, потому что они отправляют электронные письма, используя очередь сообщений или что-то, что не убивает сервер, потому что вы не единственный пользователь, которыйиспользуя sendgrid.Согласно веб-сайту Sendgrid, у них есть несколько очень больших сайтов, таких как Slideshare / Hootsuite / Get Satisfaction / FourSquare, которые отправили много писем.


В комментариях вы сказали:

> The list is actually about 1100 people
> (just edited the original question),
> also sendgrid wants you to break the
> lines at 1000 characters, so i'm
> guessing sticking all 1000 emails will
> break that. Marc, do you know how to
> change it to BCC?

Согласно рекомендациям smtp :

Вы должны убедиться, что заголовок свернут до длины строки менее 1000 символов.Невыполнение этого требования может привести к тому, что промежуточные адаптеры MTA разбьют для вас заголовок по границам, не являющимся пробелами, что приведет к вставке пробелов в итоговую полученную электронную почту.

Я предполагаю, что библиотеки PHP это делаютэто для вас автоматически, и вам даже не нужно беспокоиться об этом.Если вы беспокоитесь об этом, вы должны отправить support@sendgrid.com электронное письмо, чтобы спросить об этом:) ??


Но если вы действительно хотите разделить, вы должны прочитать ответ cwallenpoole , который ядумаю, это очень хорошо.Но после разбиения массива вы также должны спать , а затем дросселировать.

...