На сайте нужно постоянно делать большие рассылки пользователям через цикл.
Пользователей несколько тысяч, и количество постоянно растет.
Если делать это через обычный вызов php файла, на это уходит 50-100 секунд.
Скоро превысит set_time_limit и циклы будут прерываться.
Как лучше всего выполнять такие большие циклы?
Хотел делать через функцию exec(), но на хостинге отключена она.
Есть ли какие-нибудь альтернативы?
Или лучше записывать все задачи в cron, а там вызывать через php интерпретатор?
Надо смотреть по архитектуре.
Если нужно организовать рассылку пользователям из БД, то достаточно просто вызывать скрипт, к примеру такой:
<?php
set_time_limit(0);
$message=$_POST["mess"]
function getuser(){...};
function send($user,$message){...}
while($user=getuser()){
if (!send($user,$message))
send($user,$message) #повторная отправка в случае неудачи
}
?>
Islamfon: будет нагрузка, можно через CGI шлюз вызвать программу рассылки, но это по-любому будет занимать секунд 40.
Тут всё равно надо от ситуации смотреть. Особенности хостинга, ресурсопожироемость php скриптов(они могут быть тоже разные).
Вот ещё интересная статья: habrahabr.ru/post/40245 можно воспользоваться материалами из неё
P.S. Тут всё равно без пожирания ресурсов не обойтись, к сожалению хостинги в России не дают нормально обрабатывать большое кол-во данных.