![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
Mam takie pytanie: Czy jest możliwość, aby w jakiś sposób móc wywołać kawałek kodu przy zamykanie przeglądarki przez użytkownika. Np. ja se coś i przeglądam, i wychodze ze strony i bez mojej wiedzy na serwerze wtedy wykonuje się jakiś kod. Oczywiście chodzi mi o rozwiązanie uniwersalne działające również np. na Lynx'a. Dokładniej chce aby po wyjściu użytkownika ze strony usuwały mi się pewne pliki.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin ![]() |
widzialem skrypt w Javie przy zamknieciu przegladarki pojawial sie komunikat ze byles u nas .... minut proponuje poszukac i zobaczyc czy da sie wywolac odpowiedni adres
a swoja droga mozna rozwiazac to sesjami i podczas wywolania strony sprawdzac mozna jak dlugo user pracuje na stronie i jezeli minie 5 minut od ostatniego klikniecia na jakis link to usunac odpowiednie pliki -------------------- brak sygnaturki rowniez jest sygnaturką
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Zdaje sie że w js akcja onUnload. A wtedy otwierasz małe okienko, gdzie wykonujesz określone akcje, a następnie je zamykasz
-------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
ta propozycja z sesjami jest niezła, a to z onUnload to nie przejdzie, bo można np. zablokować js, a w Lynxie to JS wogóle nie działa
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 22.04.2003 Skąd: Wawa Ostrzeżenie: (0%) ![]() ![]() |
no własnie jak dokładniej powinno wyglądać taki skrypt to sprawdzania aktywnosci i ewentualnego usuwania pliku sesji??
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
możesz to zrobić tak:
-zapisujesz datę wejścia na strone (najlepiej w jakieś szybkiej db), może to być normalna godzina, może być również np przeliczona na sekundy. -robisz[php:1:dbbb9d2fac]<?php $now=time(); $time_to_die=300;//60*5 $result=mysql_query("SELECT 'user' FROM 'tabela' WHERE 'logged'=1 AND 'last_login'<".$now-$time_to_die);//masz już nazwy userów, którym trzeba coś zrobić "na dowidzenia" /*np. mysql*/mysql_query("UPDATE 'tabela' SET 'logged'=0 WHERE 'last_login'<".$now-$time_to_die); ?>[/php:1:dbbb9d2fac] -gotowe |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 76 Pomógł: 0 Dołączył: 17.06.2003 Skąd: Niemcy / Siemianowice Ostrzeżenie: (0%) ![]() ![]() |
Tak też jest poprawnie :
[php:1:b3aa3d9593] <? $db = mysql_connect("localhost", "root", "bytom") ; mysql_select_db("edu", $db); $res = mysql_query ("SELECT * FROM user "); while($row = mysql_fetch_array($res)) { $akt=$row["akt"]; $username= $row["username"]; $time = time(); $auttime = 300; $lasttime = $akt + $auttime; if ($time>$lasttime) { echo ""; }else{ echo "<font color=a72763> $username</fomt> :"; } } ?>[/php:1:b3aa3d9593] -------------------- pozdrawiam :)
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 223 Pomógł: 0 Dołączył: 13.01.2003 Skąd: 3rd ball of mud behind a big ball of burning gas Ostrzeżenie: (0%) ![]() ![]() |
Cytat Tak też jest poprawnie
Popoprawnie to owszem może jest, ale w jakim celu odciążać bazę danych od tego typu czynności skoro jest taka możliwość? W przypadku dwóch poprawnych możliwości powinno postawić się w drugiej mierze (albo w kolejnej w zależnosci od ustalonych przez siebie priorytetów) na szybkość funkcjonowania skryptów. -------------------- It's Time to Join the PLD Linux Generation!
<? while (!$success) { $try++; } ?> |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 76 Pomógł: 0 Dołączył: 17.06.2003 Skąd: Niemcy / Siemianowice Ostrzeżenie: (0%) ![]() ![]() |
sugerujesz , że mój skrypt jest wolniejszy niż od Jabol'a.
Cel hmm może dlatego żeby ta baza szybciej pracowała szczerzę mówiąc niezastanawiałęm się . ale masz przykłąd zastosowania np zliczania osób zalogowanych na stronie,śledzenia uzytkowników itp. za pomocą If i wyciągania z bazy pewnych danych wydaje mi się ze to łatwiejsz i b korzystne dla osób które chcą coś takiego umieści na stronach swojich serwisów P.s szybkość u mnie j znakomita biorąc pod uwagę że w bazie np z userami było by ok. 20000 rekordów . ile sek trwało by wykonanie skryptu a ile przez IF ![]() bo ja nie wiem moim zdaniem If był by szybszy ciekawe czy ma sens to co napisałęm ? -------------------- pozdrawiam :)
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Aby dokladnie wiedziec kiedy user opuscil strone mozemy zastosowac Streaming HTML.
Po stworzeniu calej strony - wyslaniu jej do klienta, na koncu dajemy [manual:6a9a5ff973]flush[/manual:6a9a5ff973]. Ustawiamy [manual:6a9a5ff973]ignore-user-abort[/manual:6a9a5ff973] na true oraz [manual:6a9a5ff973]Set_Time_Limit[/manual:6a9a5ff973] na 0. Odpalamy "nie konczaca sie petle", ktora utrzymuje caly czas polaczenie z klientem. W petli umieszczamy warunek na [manual:6a9a5ff973]connection-aborted[/manual:6a9a5ff973] == true, przed nim musimy umiescic jeszcze flush. Jezeli bedzie prawda uruchamiamy kod, ktory ma byc uruchominny po zamknieciu strony. Gotowiec ![]() [php:1:6a9a5ff973]//... flush(); ignore_user_abort(true); set_time_limit(0); while () { flush(); if ( connection_aborted == true ) { // jakis skrypt, po zamknieciu polaczenia brake; } }[/php:1:6a9a5ff973] |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 76 Pomógł: 0 Dołączył: 17.06.2003 Skąd: Niemcy / Siemianowice Ostrzeżenie: (0%) ![]() ![]() |
sposobów jest sporo
![]() i Twój działa -------------------- pozdrawiam :)
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witaj
Pisales 10:48 14-07-2003 to co zamiescilem ponizej, ten kod ktory podales nie dziala, po paru kombinacjach-wychodzi cos takiego ze jak puszczam poprawna petle while-to przegladarka mi sie zawiesza (w neverendingloopie)- 8O , a jak zamykam to zadna z akcji ustawionych nie dziala, probowalem rowniez z register_shutdown_function() i takze to nie pomaga. Jesli wiesz jak wykonac jakis skrypt po zamknieciu przegladarku (tudziez resecie kompa) to napisz. z gory dziekuje Dtektor Cytat Aby dokladnie wiedziec kiedy user opuscil strone mozemy zastosowac Streaming HTML.
Po stworzeniu calej strony - wyslaniu jej do klienta, na koncu dajemy [manual:654a0f5c68]flush[/manual:654a0f5c68]. Ustawiamy [manual:654a0f5c68]ignore-user-abort[/manual:654a0f5c68] na true oraz [manual:654a0f5c68]Set_Time_Limit[/manual:654a0f5c68] na 0. Odpalamy "nie konczaca sie petle", ktora utrzymuje caly czas polaczenie z klientem. W petli umieszczamy warunek na [manual:654a0f5c68]connection-aborted[/manual:654a0f5c68] == true, przed nim musimy umiescic jeszcze flush. Jezeli bedzie prawda uruchamiamy kod, ktory ma byc uruchominny po zamknieciu strony. Gotowiec ![]() [php:1:654a0f5c68]//... flush(); ignore_user_abort(true); set_time_limit(0); while () { flush(); if ( connection_aborted == true ) { // jakis skrypt, po zamknieciu polaczenia brake; } }[/php:1:654a0f5c68] -------------------- ...w karakonim pędzie...
|
|
|
![]()
Post
#13
|
|
Grupa: Przyjaciele php.pl Postów: 195 Pomógł: 0 Dołączył: 7.07.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie specjalnie podoba mi sie ta metoda, szczerze mowiac. Przede wszystkim niesamowicie obciaza serwer, lacze... wszystko. Jesli juz brudzic sie i bawic w takie cos, to lepiej wyglada malutki iframe odswierzany co np. sekunde.
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Sprawdze kod w domu i zobacze co jest nie tak.
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
dtektor: Sugerowałbym, abyś nauczył sie poprawnie cytować:
- cytuje się tylko te fragmenty, do których chcemy się ustosunkowac - wycinamy elementy niepotrzebne - odpowiadamy POD cytowanym fragmentem. -------------------- |
|
|
![]()
Post
#16
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Jako, ze po odpoczynku naszla mnie wena tworcza
![]()
Ten post edytował Seth 21.02.2005, 18:04:08 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 0 Dołączył: 28.11.2003 Skąd: gliwice Ostrzeżenie: (0%) ![]() ![]() |
a dlaczego nie mozna uzyc samego if(conection_abordet())?
-------------------- www.motorower.com.pl - kup sobie cos :]
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 0 Dołączył: 28.11.2003 Skąd: gliwice Ostrzeżenie: (0%) ![]() ![]() |
a i tak w ogole nie moge dojsc ciagledo tego co to jest flush i Streaming HTML
-------------------- www.motorower.com.pl - kup sobie cos :]
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Cytat a i tak w ogole nie moge dojsc ciagledo tego co to jest flush
"Wypluwanie" danych do klienta. Wiecej [manual:0b56cd140f]flush[/manual:0b56cd140f] Cytat ... i Streaming HTML
Streaming HTML to cos podobnego do tego co nazywamy media strumieniowe. Tzn polaczenie z klientem jest przez caly czas utrzymywane. W przypadku zwyklych stron po wyslaniu danych do klienta/przegladarki polaczenie jest zamykane. Co to nam daje ? To, ze mozemy wysylac caly czas nowe dane wykorzstujac to, ze jestesmy z uzytkownikiem polaczeni, a wiec zmienne i operacje juz przetworzone mamy w pamieci - czyli nie musimy uzywac np sesji. Edit: cos takiego uzywa sie np do tworzenia chatow w php gdzie caly skrypt wykorzystujacy Streming HTML caly czas wypluwa (flush) tekst teg co pisza inni. P.S. Nastepnym razem napiz na PW, a nie tworz nowego tematu ! |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 0 Dołączył: 28.11.2003 Skąd: gliwice Ostrzeżenie: (0%) ![]() ![]() |
szybko piszesz :],
a da sie wtedy przy pomocy tego bo spanlezo mowil ze php jest wykonywane i znika jakies tam side server czy jakos tak a czy przy pomocy tego mozna np. funkcje zostawic tak jak zostaja w js? i nie rozumiem, wyplowanie do klienta danych czyli co nam to da? wiesz wkoncu jestem poczatkujacy ![]() -------------------- www.motorower.com.pl - kup sobie cos :]
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 15:33 |