Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Akcja na dowidzenia
Jabol
post
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.
Go to the top of the page
+Quote Post
itsme
post
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ą
Go to the top of the page
+Quote Post
DeyV
post
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..."
Go to the top of the page
+Quote Post
Jabol
post
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
Go to the top of the page
+Quote Post
dziama
post
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??
Go to the top of the page
+Quote Post
Jabol
post
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
Go to the top of the page
+Quote Post
members_of_mayda...
post
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 :)
Go to the top of the page
+Quote Post
kwiateek
post
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++; } ?>
Go to the top of the page
+Quote Post
members_of_mayda...
post
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 questionmark.gif

bo ja nie wiem moim zdaniem If był by szybszy

ciekawe czy ma sens to co napisałęm ?


--------------------
pozdrawiam :)
Go to the top of the page
+Quote Post
Seth
post
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 tongue.gif:
[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]
Go to the top of the page
+Quote Post
members_of_mayda...
post
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 smile.gif
i Twój działa


--------------------
pozdrawiam :)
Go to the top of the page
+Quote Post
dtektor
post
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 tongue.gif:
[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...
Go to the top of the page
+Quote Post
e-Gandalf
post
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.
Go to the top of the page
+Quote Post
Seth
post
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.
Go to the top of the page
+Quote Post
scanner
post
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.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Seth
post
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 winksmiley.jpg tutaj jest poprawnie dzialajacy kod wykorzystujacy streaming html do utrzymywania polaczenia z klientem oraz sprawdzania kiedy zerwal polaczenie z nasza strona:
  1. <?php
  2. //...
  3.  
  4. // by Seth
  5.  
  6.  
  7. while ( !connection_aborted() )
  8. {
  9. print &#092;"n\";
  10. flush();
  11.  
  12. sleep( 1 );
  13. }
  14.  
  15. // kod na dowidzenia
  16.  
  17. exit();
  18. ?>


Ten post edytował Seth 21.02.2005, 18:04:08
Go to the top of the page
+Quote Post
goped
post
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 :]
Go to the top of the page
+Quote Post
goped
post
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 :]
Go to the top of the page
+Quote Post
Seth
post
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 !
Go to the top of the page
+Quote Post
goped
post
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 biggrin.gif


--------------------
www.motorower.com.pl - kup sobie cos :]
Go to the top of the page
+Quote Post
goped
post
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 :]
Go to the top of the page
+Quote Post
Seth
post
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.
Go to the top of the page
+Quote Post
goped
post
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 :]
Go to the top of the page
+Quote Post
Nitryt14
post
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?questionmark.gif

Z góry dziekuje i pozdrawiam


--------------------
Człowiek boi się tego czego nierozumie
---
Blog początkującego programisty
Go to the top of the page
+Quote Post
falkor
post
Post #25





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 27.02.2005

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Aktualny czas: 21.08.2025 - 05:00