Долгоиграющая процедура

Здравствуйте, вопрос следующий.
если мне необходимо сделать некую «долгоиграющую процедуру» которая бы информировала о процессе работы.
Как это сделать более правильно?
Если пишу к примеру:

foreach($rec in records) {
 $this->Message_AddNotice($rec);
}
$this->SetTemplateAction('admin');

То тогда все сообщение приходят единовременно после отработки всей процедуры.
Есть ли какой-то правильный способ сделать это?

5 комментариев

avatar
обрабатывай records небольшими порциями или по одной записи, если их не много
avatar
а как выводить сообщения? или же заставлять пользователя все время кликать next или скриптом дергать RESTfull ссылку?
avatar
либо мудрить с flush()
avatar
мудрить с flush
при 1000 записей можно напороться и на таймаут исполнения скрипта. тот уже выйдет с фатальной ошибкой
avatar
посмотри ls.msg, там есть метод для вывода сообщения.
ты можешь
1. запрашивать аяксом адрес «шага» обработки данных, где, допустим, обрабатывается 10 записей
2. обрабатывать на серверной стороне эти 10 записей и по каждой вкладывать строку сообщения в массив для отдачи аяксом
3. на клиентской стороне получать массив из 10 сообщений и выводить их через ls.msg каждое
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.