Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Непрерывающийся коннект (?!)


Автор: mold 15.3.2003, 00:21
Приветствую!

У менятакой вопрос. Каким образом можно организовать сабж?
тоесть.. при соединении с сервером для каждого пользователя поднимается отдельный демон httpd, который в свою очередь поднимает модуль РНР.
когда РНР отрабатывает, он умирает передав результаты своей работы httpd, который передает их клиенту и тоже умирает.

Каким образом можно зделать так, чтобы после отработки, модуль РНР и httpd поднятые специально для данного клиента не умирали, а ждали повторного его соединения.

для чего это нужно.

допустим у нас есть программа рассылки.
скрипт должен соединиться с смтп сервером и читаю построчно из файла е-мэйл адресса говорить их серверу. после каждой 100-ни писем, он рвет соединение и ждет 3 минуты, чтобы дать смтп серверу передохнуть и справиться с поступившей почтой. так вот.. если писем в общей сложности 1000 или 2000, то для отработки скрипта потребуеться довольно большое время. браузеры под окошки не способны выдержать такой таймаут.. даже если импостоянно подбрасывать инфу.
Так вот.. нужно сделать так, чтобы скрипт работал, а браузер не ждал его.. а отключался и через определенные промежутки времени вновь возовновлял соединение и получал накопившиеся результаты работы РНР. тоесть РНР должен жлдать очередного соединения браузера, но в то же время работать над отсылкой почты. таким образом не будет проблемы с вылетом браузеров по таймауту.

заранее благодарен за ответ.

Автор: Devorior 15.3.2003, 09:07
Цитата
браузеры под окошки не способны выдержать такой таймаут.. даже если импостоянно подбрасывать инфу.


эту фразу и далее не понял =\
причем тут браузер если речь идет про скрипт рассылки?

Автор: ZiP 15.3.2003, 15:59
set_time_limit
ignore_user_abort

Усек ;)?

Автор: ZiP 15.3.2003, 16:01
Цитата(Devorior @ 15.3.2003, 01:07)
Цитата
браузеры под окошки не способны выдержать такой таймаут.. даже если импостоянно подбрасывать инфу.


эту фразу и далее не понял =\
причем тут браузер если речь идет про скрипт рассылки?

при том, что если сервак определенное время не передает браузеру инфу, то браузер рвет коннект с серваком, а сервак значитца прибьет сам скрипт...

Автор: mold 15.3.2003, 17:42
Цитата(ZiP @ 15.3.2003, 07:59)
set_time_limit
ignore_user_abort

Усек ;)?

ignore_user_abort усек.. но он не решает проблему полностью...

ибо пользователь не сможет узнать результаты выполнения скрипта sad.gif

set_time_limit ---> Установка предельного времени исполнения сценария.

мне нельзя прерывать работы скрипта.... мне нужно чтобы браузер не вылетал по таймауту...

1) чтобы он отправил фору - был доволен! (состояние, когда он загрузил страницу и отдыхает)

2) каждые N секунд он обновляется и ему поступают результаты выполенния скрипта.

таким образом реальная связь с серваком минимальна + скрипт отработал + пользователь увидел результаты.


есть предложения?

PS: по этому принципу реализованы чаты.... один из них тут:
www.games.comint.net/cf.php

Автор: Sattu 23.3.2003, 07:00
Насколько известно мне, нужно слать броузеру пробел каждую минуту, чтобы он не разрывал коннект.

Автор: GoBeer 26.3.2003, 08:10
Можно попробовать по-другому.
Два скрипта:
Тот, который рассылает мыло - сразу выдает клиенту типа подождите и мета-так для отсылки клиента, скажем через 3 мин, на второй скрипт. Затем занимается своими делами и, когда закончит, пишет файл с результатами.
Второй - при запуске проверяет наличие файла от первого, если файл есть - выводит результаты и трет файл, если файла нет - вновь тот же мета-таг что и первый.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)