Strict Standards: Resource ID#34 used as offset, casting to integer (34) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#36 used as offset, casting to integer (36) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#37 used as offset, casting to integer (37) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Полное срабатывание скрипта php
ТвойWeb » WebMaster класс » PHP/Perl » Полное срабатывание скрипта php

Страниц (2): [1] 2 »
 

1. Alone - 12 Ноября, 2007 - 05:29:41 - перейти к сообщению
Теоретический вопросик:

Вобщем есть скрипт рассылки на 300 e-mail-ов. Рассылка осуществляется периодически через заданный интервал времени. Осуществляется она путём захождения на страницу скрипта юзером. Т.е. какой-нить юзер заходит и если время рассылки пришло - то произходит рассылка на 300 мэйлов.
Всё зашибись если этот юзер я или какой-нибудь терпеливый юзер, который способен немного подождать пока скрипт полностью сработает и все письма разошлются. Это занимает несколько десятков секунд. Но что будет если это будет робот, который забежит на секунду или это будет юзер, который тоже заскочит на пару секунд и потом свалит? Скрипт до конца не сработает? А значит рассылка отправится не всем подписчикам?
Или я ошибаюсь?
Если не ошибаюсь то как сделать чтобы скрипт продолжал работать до победного конца даже если юзер уже ушёл со страницы?

ps
Крона нет.
2. Ray Wen - 12 Ноября, 2007 - 07:04:28 - перейти к сообщению
Alone
Запускай свой скрипт в iframe после загрузки страницы, тогда никому ждать не придется... А так, сервер заканчивает обработку не зависимо от того что с зашедшим на страницу.
3. Furax - 12 Ноября, 2007 - 07:34:03 - перейти к сообщению
Ray Wen пишет:
сервер заканчивает обработку не зависимо от того что с зашедшим на страницу.
Не-а. От настроек PHP зависит. Один из флагов в php.ini определяет, что делать, но навскидку не скажу, какой. Либо скрипт идёт до победного конца, либо обрубается при разрыве соединения.

Alone
Лучше рассылай по частям - и юзерам приятнее, и меньше вероятность, что рассылка не успеет завершиться, но уже по причине превышения таймаута выполнения (по умолчанию, если не ошибаюсь, секунд 30, но хостёр может снизить это значение).
4. Alone - 12 Ноября, 2007 - 09:50:39 - перейти к сообщению
Ray Wen пишет:
А так, сервер заканчивает обработку не зависимо от того что с зашедшим на страницу.

Это решается добавлением:
CODE:
set_time_limit(0);

Но вопрос не об этом, а о том, что робот может заскачить на доли секунды....
Ray Wen пишет:
Запускай свой скрипт в iframe после загрузки страницы, тогда никому ждать не придется...

Это ничего не меняет. Юзер уйдёт и фрейм закроется (как и любая другая страница), а значит скрипт недосрабатывает.
Furax
Это не проблема. Всё рассылается зашибись, если я захожу на страницу и не сваливаю с неё.
Я в курсе что можно частями и т.д. Но вопрос всё равно открытый - если даже частями, т ои эти части тоже могут недорассылаться всё по той же самой причине - юзер может свалить до того. как скрипт сработает полностью. а значит рассылка придёт только тем подписчикам чьи мэйлы находятся первыми в файле рассылки......
Вот в этом вопрос.....
5. Furax - 12 Ноября, 2007 - 10:45:18 - перейти к сообщению
Alone
Ну так рассылай маленькими порциями, желательно ещё до генерации страницы - скажем, рассылай до тех пор, пока не пройдёт 2 секунды. Так, частями, всё и разойдётся...
6. Alone - 12 Ноября, 2007 - 11:00:42 - перейти к сообщению
Furax
Вопрос в том что всё рассылается нормально за один раз.
Как сделать так чтобы сделать так чтобы после того как скрипт "включился" он бы не выключался даже если юзер ушёл сос страницы (как в кроне).
7. Furax - 13 Ноября, 2007 - 02:37:07 - перейти к сообщению
Alone
php.ini пошукай.
8. Alone - 13 Ноября, 2007 - 04:39:34 - перейти к сообщению
Furax пишет:
php.ini пошукай.

Зачем?
9. Furax - 13 Ноября, 2007 - 08:19:43 - перейти к сообщению
Параметр max_execution_time определяет, сколько максимально скрипт может выполняться, а, кажись, ignore_user_abort как раз определяет, продолжится ли выполнение скрипта после отключения пользователя.

З.Ы. А cron не подходит? Таких проблем не будет...
10. Ray Wen - 13 Ноября, 2007 - 08:48:10 - перейти к сообщению
Furax
Alone пишет:
ps
Крона нет.

А iframe нужен, чтобы отдать страницу пользователю... а то растроется что сайт не доступен...

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0403]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33