![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Chciałbym zrobić sobie funkcje która będzie mi się powtarzała co jakiś czas ( w tym wypadku co sekundę )
To mój wstępny kod: Kod w pewnym stopniu działa, ale "zamula" stronę w przeglądarce google chrome.... Bardzo bym prosiło o zoptymalizowanie kodu! (IMG:style_emoticons/default/businesssmiley.png) Ten post edytował zgred1010 2.07.2011, 22:55:57 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Od tego jest setInterval - https://developer.mozilla.org/En/window.setInterval
Jak nadal będzie zamulać to napisz coś więcej, dużo więcej (IMG:style_emoticons/default/smile.gif) - bo wtedy to nie wina samej funkcji, a Twojego kodu (IMG:style_emoticons/default/smile.gif) --edit-- Nie znam dobrze jQuery, stąd potrzebuje dokładniejszego opisu z Twojej strony to może coś wymyślimy (IMG:style_emoticons/default/smile.gif) Sprawdź jak to się ma pod innymi przeglądarkami Ten post edytował kamil4u 2.07.2011, 22:47:14 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 29 Dołączył: 13.12.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kolega wyżej ma rację - setInterval(). W dodatku dałbym maksimum 5-10 sekund, nawet więcej, ale nie jedną. Nic dziwnego, że zamula, jak w kółko mieli requesty.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Cytat W dodatku dałbym maksimum 5-10 sekund, nawet więcej, ale nie jedną. Chyba minimum (IMG:style_emoticons/default/smile.gif) Cytat Nic dziwnego, że zamula, jak w kółko mieli requesty. Moim zdaniem to nic takiego (IMG:style_emoticons/default/smile.gif) - no chyba, że w grę wchodzi znaczna ilość użytkowników "obsługująca" stronę w tym samym czasie. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 29 Dołączył: 13.12.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tak, minimum, przejęzyczyłem się.
Przy niektórych serwerach ma to znaczenie dla przeglądarki. Jeśli serwer odpowiada dłużej niż jedną sekundę, to requesty nakładają się, przeglądarka zajmuje się kilkoma naraz, wszystko się piętrzy, a przeglądarka może mulić. Należy pamiętać, że $.ajax() jest asynchroniczne. Może jednak lepiej zostawić to z setTimeout(), ale dać je dopiero, kiedy poprzednie żądanie się zakończy: |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Wątpię, żeby tak było - moim zdaniem "pomuli" i wszystko wróci do normy. Niestety nie mam dowodu na poparcie tych słów, a żadnych testów nie chce mi się robić(możliwe, że się mylę). AJAX nie musi być asynchroniczny (np. w jquery(jeżeli już z tego korzystamy) parametr async).
Kod, który podałeś też jest ok, ale jak mówiłem, moim zdaniem to nie wina samej funkcjonalności opóźnień, a kodu założyciela tematu. Poczekajmy, aż ~zgred1010 skorzysta z naszych rad i zobaczymy jak to wszystko będzie funkcjonowało (IMG:style_emoticons/default/smile.gif) Pozdrawiam |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 29 Dołączył: 13.12.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Możesz mieć rację, ale i tak staram się unikać takiego bombardowania serwera. Zwłaszcza przy dużej liczbie userów.
A co do asynchronicznego jQuery: http://api.jquery.com/jQuery.ajax/ Cytat Description: Perform an asynchronous HTTP (Ajax) request. Cytat async
Default: true |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Ja też nie (IMG:style_emoticons/default/smile.gif) - chyba, ze zachodzi taka potrzeba - tu pewnie nie (IMG:style_emoticons/default/smile.gif)
Z tym async to miało być po prostu pokazanie/przypomnienie Ci, że jest taka możliwość (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jest połowa sukcesu (IMG:style_emoticons/default/oneeyedsmiley02.png) z małym ALE... Strona się wczytała (pod względem treści i grafiki) ale cały czas pokazuje stan wczytywania (jeśli chodzi o Google chrome / na innych nie sprawdzałem jeszcze) Czytałem wszystkich posty... 1 sekunda to w fazie testu... tylko ja mam dostęp póki co do strony... Z tego co mi wiadomo to strona będzie miała minimalnie 10 000 odwiedzin dziennie.... Więc sądze że ustawie to na 2-3 minuty.... Jeśli sądzicie że są lepsze funkcje to śmiało mnie informujcie! Ja się na jQuery dużo nie znam i się uczę... Ps.: Jeśli kogoś interesuje to skrypt będzie sprawdzał na żywo czy użytkownik nie ma wiadomości nowych... więc w pliku messages.php jest zliczanie nieprzeczytanych wiadomości... |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 29 Dołączył: 13.12.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ugh, to mamy tu poważne zapętlenie.
setInterval() wywołuje się raz, a funkcja ta powoduje cykliczne wykonywanie określonej instrukcji. Zlecasz raz i koniec. setTimeout() wykonuje instrukcję jednokrotnie po określonym upływie czasu. Jeśli na początku wywołujesz setInterval(), a później jeszcze przy każdym pobraniu danych, to może być niezły pasztet. Masz dwa wyjścia:
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
ok sprawdzę (IMG:style_emoticons/default/smile.gif) jak serwer mi odpowie to dam znać (IMG:style_emoticons/default/wink.gif)
Panowie ;] panie (IMG:style_emoticons/default/biggrin.gif) Udało się (IMG:style_emoticons/default/biggrin.gif) dzięki waszej pomocy (IMG:style_emoticons/default/biggrin.gif) i niewielkiej pomocy samego siebie doszliśmy do końca (IMG:style_emoticons/default/biggrin.gif) Usunąłem po wykonaniu zadania funkcje setInterval() i w
zmieniłem check_mess() na check_mess Wszystko działa (IMG:style_emoticons/default/smile.gif) Teraz śmigam robić facebooka ;] dzięki wielkie (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czemu nikt,tego nie używa:
var $jq=jQuery.noConflict(); i zamiast $(document).ready(function(){ użyć: $jq(document).ready(function(){ Niech Pan włączy firebuga i zobaczy Pan błędy typu ala,że $ nie jest zdefiniowana" |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
@Rid - noConflict używa się w przypadku korzystania z 2 lub więcej bibliotek,w której to znajduje się funkcja "$" - w tym wypadku chyba to nie następuje, więc Twoja rada wydaje się zbyteczna.
Cytat Niech Pan włączy firebuga i zobaczy Pan błędy typu ala,że $ nie jest zdefiniowana" Gdy nigdzie indziej nie występuje inna funkcja "$", takie błędu nie będzie. PS. Na forum mamy zwyczaj mówienia sobie na 'ty'. |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tak,wiem to ,ale jak projekt ,stronka się rozrośnie i zostanie np dodany jakikolwiek zewnętrzny plik js.Jakiś plugin jq,skrypt z elementami jq to trzeba będzie wtedy przerabiać,to nie lepiej od razu jest tego użyć ,niż potem bawić się w przerabianie.
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
z innych bibliotek nie korzystam (IMG:style_emoticons/default/wink.gif) Projekt jest już przy końcu (IMG:style_emoticons/default/wink.gif) a większość pluginów piszę osobiście
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 15:53 |