![]() |
![]() ![]() |
![]() |
![]()
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 :]
|
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 0 Dołączył: 28.11.2003 Skąd: gliwice Ostrzeżenie: (0%) ![]() ![]() |
wielkie ci dzieki chyba wlasnie zaczolem rozumiec, wiesz przewaznie jak do kogos napisalem pisal od tego jest forum ale nie ma sprawy nie bede tworzyl nowego temtu dzieki ci zaraz sprobjem zrobic chata za pomoca tej komendy
-------------------- www.motorower.com.pl - kup sobie cos :]
|
|
|
![]()
Post
#22
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Cytat 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?
? Nie rozumiem. Cytat i nie rozumiem, wyplowanie do klienta danych czyli co nam to da?
Sproboj zrobic tak, ze tworzysz sobie petle i dawaj wewnatrz print $i."rn"; gdzie $i to kolejne wartosci w petli for. Jak pewnie zauwazysz wartosci te pojawia Ci sie dopiero wtedy kiedy petla sie zakonczy. I tutaj wlasnie pomaga nam flush... jezli dasz go po print odrazu przegladarka Ci go wyswietli. |
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 0 Dołączył: 28.11.2003 Skąd: gliwice Ostrzeżenie: (0%) ![]() ![]() |
dzieki tobie i bambosowi zrozumialem to wkoncu wielkie dzieki :]
-------------------- www.motorower.com.pl - kup sobie cos :]
|
|
|
![]()
Post
#24
|
|
![]() Grupa: Zarejestrowani Postów: 76 Pomógł: 0 Dołączył: 17.02.2004 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
A jak nalezalo by przerobić ten skrypt tak zeby jak użytkownik się loguje w tabeli np. uzyt_online się zapisywało ze ten uzytkownik jest teraz on-line a jak się rozłaczy zeby stamtąd usuwalo ten wpis?
![]() Z góry dziekuje i pozdrawiam -------------------- Człowiek boi się tego czego nierozumie
--- Blog początkującego programisty |
|
|
![]()
Post
#25
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 0 Dołączył: 27.02.2005 Ostrzeżenie: (10%) ![]() ![]() |
Dla wszystkich chcacych bawic sie z metoda flush() cytuje kawalek php.ini z wersji 5:
Cytat Implicit flush tells php to tell the output layer to flush itself ; automatically after every output block. This is equivalent to calling the ; php function flush() after each and every call to print() or echo() and each ; and every HTML block. Turning this option on has serious performance ; implications and is generally recommended for debugging purposes only i odradzam ze wzgledu na wydajnosc. Czy ma ktos pomysl jak osiagnac dokladny czas ZAMKNIECIA PRZEGLADARKI inna metoda? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 05:00 |