![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 22.05.2014 Ostrzeżenie: (0%)
|
Witam,
W samym temacie nie da się tego sprecyzować, ale chodzi o to że potrzebny mi skrypt który będzie wywoływał pewien plik tylko wtedy gdy otrzyma odpowie od niego np. zakres liczb powyżej 1 i dodatkowo by wykonywał się cały czas jednak tylko przy spełnieniu warunków i otrzymaniu odpowiedzi. Niżej napisałem takie coś proste co działa jak należy. Bo skrypt ma wywoływać plik "import.php" i ma drukować na stronie otrzymaną wartość, zadaniem konkretnym jest wykonywanie tego skryptu w kółko jednak moje rozwiązanie powoduje że plik jest wywoływany cały czas nawet gdy nie udzieli odpowiedzi i gdy wyłączę przeglądarkę to skrypt wykonuje się w zapasie wywołań na serwerze. Oczywiście mogę wstawić czas np 1 sekundę dla "setInterval()" ale jak skrypt będzie się wykonywał szybciej to nie chcę by skrypt czekał i chcę by wykonywał się na zasadzie oczekuje na odpowiedź i się wykonuje i potem znowu czekam na odpowiedź aż do spełnienia warunku np liczby większe od 1.
Ten post edytował eKodzik 4.07.2014, 15:29:10 |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 122 Dołączył: 17.07.2005 Skąd: P-na Ostrzeżenie: (0%)
|
zamiast setinterval uzyj settimeout i wywołaj w odpowiedzi z geta
chyba że Cie źle zrozumiałem i z czasem to nie ma nic wspólnegom, wtedy zwykłe wywołanie funkcji w momencie otrzymania odpowiedzi Ten post edytował johny_s 4.07.2014, 15:30:53 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 22.05.2014 Ostrzeżenie: (0%)
|
To znaczy chodzi o wywołanie pliku *.php do momentu kiedy daje od odpowiedzi ale jak nie daje odpowiedzi np. jak dam w nim funkcję sleep(*) to czeka aż ten plik da odpowiedź a nie tak jak mój męczy ten plik 100 razy na sekundę a ten raz na te 100 wywołań odda odpowiedź a jest tam przeładowanie pliku i sie serwer mi mieli nawet po wyłączeniu okna przeglądarki.
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 122 Dołączył: 17.07.2005 Skąd: P-na Ostrzeżenie: (0%)
|
no to jak pisałem wyżej wyrzucasz to z on load
zapisujesz w oddzielnej funkcji, i w callbacku ponownie wywołujesz tą funkcję w on load dajesz jednokrotne wywołanie tej funkcji, bez setinterval |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 6 809 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 22.05.2014 Ostrzeżenie: (0%)
|
Zrobiłem coś takiego i niby działa i jest ok, nawet przy zatrzymaniu czy raczej wyłączenia okna przeglądarki całość staje, ale na jakiej zasadzie działa $.ajax() w tym rozwiązaniu i trochę mnie zaskoczyło wywołanie funkcji w samej sobie. Czy tak jest poprawnie?
@trueblue wyjaśnij mi na jakiej zasadzie dałeś mi taką odpowiedź... Chciałbym wiedzieć bo nie lubię używać czegoś czego nie rozumiem a muszę rozumieć co robię... Nie chcę być szablon-owcemm co zna regułki wykute na pamieć tylko chce je rozumieć...
Ten post edytował eKodzik 4.07.2014, 16:33:55 |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 6 809 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%)
|
Ajax wysyła asynchroniczne żądanie do serwera i w zamian otrzymuje (lub nie) odpowiedź.
Przy powodzeniu akcji wywoływana jest funkcja "success". W przykładzie samowywołanie (rekurencja) jest zapewnione właśnie dzięki tej funkcji, czyli dopiero wtedy kiedy przyjdzie odpowiedź, a nie co określony interwał czasowy. I dodatkowe informacje: http://www.php.net/manual/en/function.connection-aborted.php http://php.net/manual/en/function.ignore-user-abort.php Ten post edytował trueblue 4.07.2014, 16:39:43 |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 22.05.2014 Ostrzeżenie: (0%)
|
Dzięki wielkie za wyjaśnienie, już rozumiem (IMG:style_emoticons/default/smile.gif)
|
|
|
|
![]() ![]() |
|
Aktualny czas: 22.12.2025 - 23:11 |