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

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: 20.08.2025 - 15:33