У меня есть несколько вопросов об использовании памяти PHP. Я собираюсь провести несколько тестов самостоятельно, но полезны различные советы.
Недавно я узнал о функции PHP ignore_user_abort (), которая позволяет скрипту продолжать работу, даже если пользователь закрывает страницу. Я думал об использовании этого для своего инструмента электронной рассылки вместо заданий Cron, так как настройка заданий Cron сопряжена с различными трудностями. У альтернативного подхода, заключающегося в том, чтобы пользователь оставался на странице, используя запросы AJAX и запускала часть скрипта после доставки содержимого страницы, также есть проблемы.
Мое решение состояло бы в том, чтобы запустить call ignore_user_abort (true) в начале сценария, а в конце после того, как содержимое было сгенерировано, для правильной меры вызовите flush (), а затем запустите сценарий новостной рассылки. В качестве альтернативы, сделайте это с AJAX.
Прежде всего, кто-нибудь видит проблемы с этим подходом?
Во-вторых, если бы я использовал сценарий без установленного ограничения по времени и циклом while, проходящим через каждое электронное письмо, каким было бы использование памяти, если бы я делал это за один раз? Поскольку я буду перезаписывать переменные, а не использовать новые, я думаю, что они будут низкими.
В-третьих, потому что, если я отправляю большое количество писем, скажем, 1000 за цикл, я не хочу перегружать свой почтовый сервер. С моей работой cron я запускаю скрипт каждые 5 минут, отправляя партию из 50 писем. Если бы я делал это за один проход, могу ли я отправить 50 электронных писем, позвонить в спящий режим, скажем, на 5 минут, а затем продолжить еще 50 писем? Если да, то каково использование памяти сценариев в период ожидания? Это будет эффективный метод?
То, что я действительно пытаюсь сделать здесь, - это найти способ создать инструмент для новостной рассылки, который не требует сложной (для нетехнических людей) задачи создания задания Cron (которое даже не требуется). опция на общих хостах), и не требует, чтобы пользователь держал свой браузер открытым на одной странице.
Любые идеи, предложения или отзывы приветствуются. Спасибо!