Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Obciążenie serwera.
patryk20120
post 24.08.2013, 12:40:58
Post #1





Grupa: Zarejestrowani
Postów: 256
Pomógł: 1
Dołączył: 20.04.2008

Ostrzeżenie: (0%)
-----


Witam Was,

napisałem w miarę prosty skrypt na swoją strone, lecz po wejściu sporej liczby osób np. 100 strona zaczyna bardzo wolno się ładować. Możecie mi powiedzieć, czy poniższy kod może aż tak obciążać serwer?

Mam taki kodzik na stronie:
  1. <script type="text/javascript" language="javascript">
  2. $(document).ready(function() {
  3.  
  4. function live(){
  5. $.ajax({
  6. url: './a_php.php',
  7. data: {data: 'info'},
  8. type: 'post',
  9. success: function(output) {
  10. $("#div").html(output);
  11.  
  12. }
  13. });
  14.  
  15. }
  16. live();
  17. setInterval(function(){live();}, 19800);
  18.  
  19. });
  20. </script>


a to kod a_php.php
  1. <?php
  2. if( $_POST['data'] == 'info' && !empty($_POST['data'])){
  3.  
  4. $twitch_live = false;
  5. $twitch_live_v = 0;
  6. $twitch_live_t = '';
  7. $twitch_live_g = '';
  8. //---------------------
  9. $gamecreds_live = false;
  10. $gamecreds_live_v = 0;
  11. $gamecreds_live_t = '';
  12. $gamecreds_live_g = '';
  13. //------------
  14. $wyswietl = '';
  15. $razem = 0;
  16. //pobieranie danych gamecreds
  17. $json_array = json_decode(file_get_contents('https://api.dailymotion.com/videos/?ids=kod&fields=title,genre,onair,tag,audience&limit=25'), true);
  18. if($json_array['list'][0]['onair'] == true){
  19. $gamecreds_live = true;
  20. $gamecreds_live_v = $json_array['list'][0]['audience'];
  21. $gamecreds_live_t = $json_array['list'][0]['title'];
  22. $gamecreds_live_g = $json_array['list'][0]['tag'][1];
  23. }
  24. //pobieranie danych twitch
  25. $json_array2 = json_decode(file_get_contents('https://api.twitch.tv/kraken/streams/nick'), true);
  26.  
  27. if ($json_array2['stream'] != NULL) {
  28. $twitch_live = true;
  29. $twitch_live_v = $json_array2['stream']['viewers'];
  30. $twitch_live_t = $json_array2['stream']['channel']['status'];
  31. $twitch_live_g = $json_array2['stream']['channel']['game'];
  32.  
  33. }
  34.  
  35. if($twitch_live == true || $gamecreds_live == true){
  36. $razem = $twitch_live_v + $gamecreds_live_v;
  37. $wyswietl = '
  38. <div id="live-header-on">
  39. '.$razem.'</div>';
  40. }
  41.  
  42.  
  43. if($twitch_live == false && $gamecreds_live == false){
  44. $wyswietl = '
  45. <div id="live-header-off"></div>';
  46. }
  47.  
  48. echo $wyswietl;
  49.  
  50. }
  51. ?>


Czy przyczyną obciążenia jest źle zrobiony kod, czy słaby serwer lub z jakimiś ograniczeniami?
Go to the top of the page
+Quote Post
llukasz
post 30.08.2013, 11:23:11
Post #2





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 15.05.2007

Ostrzeżenie: (0%)
-----


Ja bym jakoś te pobrane z zewnątrz dane zapisał lokalnie w bazie lub w pliku i potem ewentualnie aktualizował co jakiś czas
Go to the top of the page
+Quote Post
patryk20120
post 31.08.2013, 17:36:11
Post #3





Grupa: Zarejestrowani
Postów: 256
Pomógł: 1
Dołączył: 20.04.2008

Ostrzeżenie: (0%)
-----


Też można, ale problem w tym, że nie wiem jak zrobić skrypt, który będzie odpalał się tylko i wyłącznie co np. 20 sekund. Ponieważ jak zrobie go w aktualizuj.php i ktoś w niego wejdzie to będzie aktualizowało dane do bazy. To samo jak go "zaincluduje" do index.php, też bedzie się odpalał za każdym razem jak ktoś wejdzie na strone.
Go to the top of the page
+Quote Post
ssstrz
post 31.08.2013, 21:54:01
Post #4





Grupa: Zarejestrowani
Postów: 103
Pomógł: 17
Dołączył: 15.12.2012

Ostrzeżenie: (0%)
-----


a nie mozesz cacheowac pobranych danych (JSON) gdzies na serwerze bo pewnie to zamula?
Go to the top of the page
+Quote Post
jackraymund
post 2.09.2013, 08:46:39
Post #5





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

Ostrzeżenie: (0%)
-----


Cytat(patryk20120 @ 31.08.2013, 18:36:11 ) *
Też można, ale problem w tym, że nie wiem jak zrobić skrypt, który będzie odpalał się tylko i wyłącznie co np. 20 sekund. Ponieważ jak zrobie go w aktualizuj.php i ktoś w niego wejdzie to będzie aktualizowało dane do bazy. To samo jak go "zaincluduje" do index.php, też bedzie się odpalał za każdym razem jak ktoś wejdzie na strone.

Poczytaj o cron
jest to program który uruchamia skrypt w określonych momentach czasu,
więc jeżeli masz dostęp do crona to możesz odpalić co 20sekund, a dane wpisać do bazy, i wyczytywać je w ajaxie


--------------------
Wykonuje zlecenia na pobieranie danych ze stron i różne boty.
Go to the top of the page
+Quote Post
patryk20120
post 2.09.2013, 16:46:12
Post #6





Grupa: Zarejestrowani
Postów: 256
Pomógł: 1
Dołączył: 20.04.2008

Ostrzeżenie: (0%)
-----


Cytat(jackraymund @ 2.09.2013, 09:46:39 ) *
Poczytaj o cron
jest to program który uruchamia skrypt w określonych momentach czasu,
więc jeżeli masz dostęp do crona to możesz odpalić co 20sekund, a dane wpisać do bazy, i wyczytywać je w ajaxie


Własnie ostatnio to znalazłem, ale mój serwer na którym chciałbym postawić skrypt tego nie obsługuje ;(
Go to the top of the page
+Quote Post
jackraymund
post 4.09.2013, 16:18:00
Post #7





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

Ostrzeżenie: (0%)
-----


to zrób alternatywe w indexie biggrin.gif ajax zapytanie do skryptu, skrypt robi zapytanie w bazie, w której trzymasz tylko timestamp i czy jest aktualnie wykonywany skrypt

czyli index
zapytanie do bazy czy jest wykonywany skrypt i czy data w bazie jest o 20 sekund starsza od aktualnej
wtedy wyrysuj ajaxa na strone,

w ajaxie
to samo zapytanie, czy jest wolny i czy data w bazie jest o 20 sekund starsza od aktualnej
jezeli nie jest wolny
ustawiasz status na pracujacy
uruchamiasz twoj skrypt do aktualizacji
potem tylko ustawiasz aktualna date i status wolny
+ kilka małych usprawnień powinieneś też dodać

Ten post edytował jackraymund 4.09.2013, 16:18:51


--------------------
Wykonuje zlecenia na pobieranie danych ze stron i różne boty.
Go to the top of the page
+Quote Post
patryk20120
post 4.09.2013, 17:26:14
Post #8





Grupa: Zarejestrowani
Postów: 256
Pomógł: 1
Dołączył: 20.04.2008

Ostrzeżenie: (0%)
-----


Faktycznie, takie proste rozwiązanie, że nawet mi do głowy nie przyszło. Dzięki wielki.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 21.06.2025 - 19:40