[php] sesje - połączenia między użytkownikami

0

Witam,
pewnie dało by się lepiej opisać problem w temacie.
Znalazłem kiedyś prosty czat działający w php bez bazy danych (podpisany był, że używa sesji). Niestety było to dawno i nie umiem go znaleźć. Możecie mi wyjaśnić jak takie programy działają? Znam sesje, ale nie mam pojęcia jak sesje różnych użytkowników ze sobą połączyć.
Mam nadzieję, że czegoś takiego już nie było, ale, jak pisałem, nie wiem jak to nazwać.

0

A może było to zrobione po prostu na plikach tekstowych? (nawet na pojedynczym pliku tekstowym)

0

Połączyć sesje? Ty wiesz o czym mówisz? Sesje są właśnie po to, żeby odróżnić userów, a nie ich łączyć.

I czy to taki problem zrobić to na bazie danych?

0

Czyli, jeśli dobrze rozumiem, żeby zrobić np. warcaby, należy trzymać dane na serwerze w postaci bazy lub pliku, zaś po stronie graczy odświeżać (tradycyjnie lub używając ajax'a) co jakiś czas i sprawdzać, czy jest coś nowego, tak?. Po wykonaniu ruchu wysyła się wiadomość. Oczywiście trzeba rozróżnić różne pary graczy. Tak? Czy w ten sposób serwer nie będzie za bardzo przeciążony przez tyle żądań?

0

Na razie taka technika, że klient odpytuje co jakiś czas serwer o zmiany (tzw. polling) to jedna z niewielu opcji jakie masz. Prawdopodobnie najlepiej zacząć właśnie od niej. Jedną z wariacji, które w niektórych przypadkach potrafi znacznie zmniejszyć obciążenie serwera (a w innych -- praktycznie nic nie daje) jest tzw. long polling. Oprócz tego wchodzą powoli technologie umożliwiające wypychanie danych przez serwer do klienta, a nie tylko odpowiadanie na żądania. Ale to jest jeszcze troszkę... w powijakach. A jeśli nie w powijakach, to na tyle młode, że początkującemu najbezpieczniej będzie użyć zwykłego pollingu.

Jeśli chodzi o obciążenie serwera, to sam się przekonasz. Czasem jest to problemem, czasem nie. Da się zresztą wprowadzić pewne techniki optymalizacyjne. Zminimalizować wielkość odpowiedzi, pokombinować z interwałem, tj. okresem czasu pomiędzy wysyłaniem na serwer żądań sprawdzających.

0
appleman napisał(a)

Czyli, jeśli dobrze rozumiem, żeby zrobić np. warcaby, należy trzymać dane na serwerze w postaci bazy lub pliku, zaś po stronie graczy odświeżać (tradycyjnie lub używając ajax'a) co jakiś czas i sprawdzać, czy jest coś nowego, tak?. Po wykonaniu ruchu wysyła się wiadomość. Oczywiście trzeba rozróżnić różne pary graczy. Tak? Czy w ten sposób serwer nie będzie za bardzo przeciążony przez tyle żądań?

Wysłanie zapytania o stan bazy wymaga transmisji ok 1 kB danych poprzez Ajax dla jednego użytkownika. Jeśli nie w bazie danych to można przekazywać dane między sesjami poprzez zmienne globalne, ale i tak trzeba zapisać wyniki do pamięci zewnętrznej bo jak wyskoczy napięcie na serwerze, to dane z pamięci operacyjnej zostaną stracone. Bazy danych są lepsze od zwykłych plików bo mają wbudowaną obsługę transakcji, wielodostępu i szybkie wyszukiwanie rekordów przez indeksy.

0

Wielki dzięki, Wasze odpowiedzi bardzo mi pomogły:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1