Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Serwery usług internetowych
Solitary
post 8.07.2003, 09:33:00
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 29.08.2002
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Witam,


Mam kolejny problem... Otóż, załóżmy, że chcę napisać własny serwer POP3, jak byście rozwiązali wysyłanie maili.

Problem jest taki, iż jeśli użytkownik zechce ściągać maila o rozmiarze np. 20 MB, to żaden inny użytkownik nie będzie mógł wysłać/odebrać żadnych informacji, dopuki nie skończy się ściąganie e-maila 20megowego.

Myślałem nad tym, już nawet próbowałem, przeplatać (wysyłam 2 KB i czytam innych userów, i ich wykonuje później znów wysyłam 2 KB i dalej czytam innych userów...), ale to może słabo działać.

Najlepszym rozwiązaniem było by _duplikowanie_ skryptu, tak jak to jest w C++, że gdy user się loguje to przydzielany mu jest osobna kopia programu.

Ale teraz powstaje pytanie czy w skryptach php odpalanych z linii komend, istnieje taka możliwość ? Jeśli tak to bardzo bym prosił, żeby ktoś mi wytłumaczył jak to zrobić i jak będzie się zachowywał zduplikowany skrypt ?

Z góry dziękuję za pomoc.

P.S. Wiem, że pewnie uważanie, że powinienem to napisać w C++ lub skorzystać z istniejących skryptów, ale ja chce to zrobić dla własne satysfakcji, i najlepiej w php, gdyż C++ jeszcze nie umiem (mam zamiar się nauczyć).


--------------------
Pozdrawiam,
Solitary
Go to the top of the page
+Quote Post
uboottd
post 8.07.2003, 09:50:39
Post #2





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

Ostrzeżenie: (0%)
-----


socket_select

Ogolnie, otwierasz socket do sluchania, jak przyjdzie nowe polaczenie robisz nowy socket ktorym bedziesz gadal z klientem ktory wlasnie sie polaczyl i dopisujesz ten socket do listy dla socket_selecta. Glowna petla to czekanie az socket_select cos zwroci, sprawdzenie ktory socket cos zglasza, z ktorym klientem jest on zwiazany, co trzeba z nim zrobic, zrobienie tego i powrot do selecta.
Go to the top of the page
+Quote Post
Solitary
post 8.07.2003, 09:54:04
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 29.08.2002
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


wiem, mi nie chodzi o ODBIERANIE informacji od klienta

mi chodzi o WYSYŁANIE...

bo jak natrafie na komende od klienta, który będzie kazała mi wysłać maila który ma 20 MB, to zaczyna się pętla (czytaj, wyślij.. czytaj, wyślij) i te 20 MB musi przepchnąć, żeby znów wywołać socket_select i znów obsłuży klienta

a w czasie kiedy ktoś będzie odbierał 20 MB, ktoś inny może też chcieć odebrać poczte... a wtedy bede musiał czekać, aż tamten wszystko ściągnie....

w C++ jest to tak, że programy się duplikują i każdy obsługuje jednego klienta...


--------------------
Pozdrawiam,
Solitary
Go to the top of the page
+Quote Post
uboottd
post 8.07.2003, 12:13:03
Post #4





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

Ostrzeżenie: (0%)
-----


Robisz to w jednym. socket_select czeka zarowno na sockety z ktorych czytasz jak do ktorych piszesz. pakujesz kawalek danych do socketa i czekasz az ci socket_select zwroci ze znow mozesz pisac, a w miedzyczasie czytasz/piszesz do innych co do ktorych sockect_select mowi ci ze mozesz.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 00:44