![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Edit: rozwiazane
Ten post edytował CuteOne 18.07.2012, 02:32:27 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) ![]() ![]() |
Hej, może napisałbyś problem i jak to rozwiązać, skoro już Ci się udało? (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#3
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
Prawie 2000 postów i nie wiesz jakie zasady tu panują?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
@webdice
III. Prawa i obowiązki. f. Użytkownicy mogą edytować własne, wysłane już posty, oraz kasować je o ile nikt na nie jeszcze nie odpisał. @greycoffey Tworzę socket serwer na własne potrzeby. Jego zadaniem jest zaincludowanie całej aplikacji (w ten sposób nie trzeba przy każdym requeście includować tych samych plików, łączyć się z bazą itp. itd.). Problemem było przekazywanie sesji pomiędzy klientem a serwerem. - jeżeli sesje były by zapisywane po stronie serwera to w jaki sposób połączyć je z klientem? - jeżeli sesje były by zapisywane po stronie klienta to w jaki sposób przekazać je do serwera? Na pierwsze pytanie nie znalazłem odpowiedzi - niby można podczepić socket klienta pod sesje ale przy dużej ilości użytkowników takie rozwiązanie mija się z celem. Powstała by jedna wielka sesja dla wszystkich użytkowników Na drugie pytanie rozwiązanie było dość banalne (IMG:style_emoticons/default/smile.gif)
a po stronie serwera obsługujemy wysłaną od klienta sesję. Na tą chwilę wszystko działa jak należy zostało mi tylko zabezpieczenie serwera przed memory leaks ale to już inna bajka Ten post edytował CuteOne 22.07.2012, 05:03:21 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 24 Dołączył: 30.03.2009 Skąd: Rokitno Szlacheckie Ostrzeżenie: (0%) ![]() ![]() |
@CuteOne: Serwer masz w PHP? Czy w czym innym?
Jeśli PHP to jak z wydajnością? Ten post edytował hind 22.07.2012, 15:48:50 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Serwer pisany w PHP. Co do wydajności wiadomo nie jest to python ale nie ma tragedii ba powiedział bym nawet, że widać odczuwalny dla użytkownika wzrost wydajności.
To co robi serwer: - tworzy socket'a - includuje pliki aplikacji, łączy się z bazą - oczekuje na połączenie od klienta - gdy następuje połączenie autoryzuje użytkownika (sesje) - i generuje dla niego stronę www (routing + GET/POST) - w tym momencie mam dylemat czy wygenerowaną stronę zapisać do pliku i jego nazwę przekazać do klienta aby ten wyświetlił go użytkownikowi. a może lepszym rozwiązaniem będzie przekazanie strony przez sockety (wyjdzie w testach, która opcja jest lepsza) - następuje zerwanie połączenia i wyświetlenie strony po stronie klienta. Od teraz lotto mi ile obiektów będzie zawierała moja aplikacja i jak tragiczny wydajnościowo jest autoloader (wszystkie pliki includowane są zaraz po starcie serwera), oczywiście nadal wąskim gardłem pozostaje baza danych ale i na to mam pomysł (IMG:style_emoticons/default/wink.gif) edit: dodam jeszcze, że poza plikami .php do aplikacji wgrywane są też wszystkie aktualne pliki cache bez względu na to czy są czy nie są wymagane Ten post edytował CuteOne 22.07.2012, 17:26:15 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 24 Dołączył: 30.03.2009 Skąd: Rokitno Szlacheckie Ostrzeżenie: (0%) ![]() ![]() |
Ja nażekam na fatalną wydajność bazy, z tym że do problemu podeszłem inaczej. Zamiast łączyć się z soketem, wyliczam dane w cronie czy innym demonie i gotowe listingi zapisuje w mysqlu.
Twój serwer PHP obsługuje wątki (pcntl czy coś innego)? czy po prostu masz tylko obsługę dla wielu połączeń (stream_select)? Co do pisania tego w pythonie/jythonie/javy, to nie uśmiecha mi się przepisywać całej logiki z php do innego języka. Oraz masz jakoś rozwiązane problemy w stylu, że przypadkowo serwer Ci zdechnie (ja u siebie uruchamiam proces który dopiero uruchamia prawidłowego demona i nadzoruje czy przypadkiem się nie wywalił. jak się wywala, restart i mail) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Na razie testuje na windowsie ale tu zamiast pseudo wątków pcntl_* (php nie ma wątków ;P) używam Temat: PHPWindows Deamony pod Windowsem (IMG:style_emoticons/default/wink.gif) Gdy przejdę na linuxa to oczywiście forkowanie za pomocą wcześniej wspomnianego pcntl_*.
Co do zabezpieczeń przed zdechnięciem serwera - odpalam równolegle drugiego demonka, który co parę sekund łączy się z serwerem, gdy nie może się połączyć odpala go. |
|
|
![]()
Post
#9
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
@webdice III. Prawa i obowiązki. f. Użytkownicy mogą edytować własne, wysłane już posty, oraz kasować je o ile nikt na nie jeszcze nie odpisał. Posty, nie tematy. Po usunięciu pojedynczego posta nie ma śladu, a co za tym idzie problemu. Po usunięciu treści postu temat jest nadal indeksowany przez wyszukiwarki, a jest bezwartościowy. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 21:59 |