• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kod PHP wykonywany automatycznie co parę sekund.

Konkurs Mistrz Programowania
0 głosów
1,627 wizyt
pytanie zadane 29 listopada 2015 w PHP przez No Lime Gaduła (4,540 p.)

Witam. Chciałbym aby na stronie głównej pewien skrypt który jest zamieszczony w pliku o nazwie 'skrypt.php' był wykonywany przez cały czas co np. 3 sekundy.
 Próbuje to zrobić przy pomocy AJAX-a. Wiem w jaki sposób na przykład tekst zwykły przetransportować, natomiast nie wiem jak przesłać AJAX-em 36 linijkowy kod php który będzie odnawiać swoje działanie.
To mój index.php

<html>
 <head>
 	<title></title>
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
 	<script>

 $(document).ready(function(){
        $.ajax(
        {
            type: 'post',
        url:'skrypt.php',
        data: {action: 'test'},
        success: function($action) {
        "include skrypt.php";
      }
        });
    });

 	</script>
 </head>
 <body>
 
 </body>
 </html>

A to plik skrypt.php

<?php 

if(isset($_POST['action']) && !empty($_POST['action'])) {
    $action = $_POST['action'];
    echo 'lol';
}
echo 'lol';
 ?>

 

2 odpowiedzi

+2 głosów
odpowiedź 29 listopada 2015 przez Comandeer Guru (607,540 p.)
You're doing it wrong!

Po prostu co 3 sekundy wywołuj ten skrypt i patrz co zwraca
komentarz 29 listopada 2015 przez Comandeer Guru (607,540 p.)

Aa, no bo masz document.ready. Powinno być:

function skrypt()
 {
    $.ajax(
    {
        type: 'post',
        url:'skrypt.php',
        data: {action: 'test'},
        success: function($action) {
            $('#kod').html($action);
        }
    });
 }
setInterval(skrypt, 1000);

 

komentarz 29 listopada 2015 przez No Lime Gaduła (4,540 p.)

Faktycznie działa. Działało też wcześniej tylko ja po prostu tego nie widziałem. Omyłkowo wyobrażałem to sobie jako rezultat pętli. Czyli co sekundę, pod starym napisem 'lol' pojawiałby sie nowy. Przypomniało mi się jednak, że to działa inaczej i dopiero gdy w pliku 
'skrypt.php' zamiast

echo 'lol';

dałem

echo rand(5,10);

zauważyłem 'namacalne' zmiany. Dziękuje za pomoc i zerknij proszę do komentarza niżej bo faktycznie sugestia tomashpl jest poprawna.

komentarz 29 listopada 2015 przez Comandeer Guru (607,540 p.)
Dlatego zasugerowałem Web Sockets/long polling… ;)
komentarz 29 listopada 2015 przez No Lime Gaduła (4,540 p.)
Wygooglowałem to wcześniej. Od czego zacząć? Mogłbyś mnie nakierować bardziej konkretnie na jakiś właściwy tor? Nigdy nie używałem rozwiązań które wymieniłeś.
komentarz 29 listopada 2015 przez No Lime Gaduła (4,540 p.)
0 głosów
odpowiedź 29 listopada 2015 przez tomashpl Obywatel (1,370 p.)
Co 3 sekundy? Pachnie mi to DDoS-em.
komentarz 29 listopada 2015 przez No Lime Gaduła (4,540 p.)
DDoS-em ? Chcę żeby skrypt na mojej stronie wykonywał się co kilka sekund. 3 sekundy to był przykład.
komentarz 29 listopada 2015 przez tomashpl Obywatel (1,370 p.)

A jak Ci wejdzie 10 osób na stronę i każda bedzie wysyłała żądanie co te kilka sekund do serwera, to będziesz miał co te kilka sekund 10 żądań. 

Ja myślę, że to nienajlepsza opcja, ale jeśli chcesz, to zrób to w JS:

function myFunction() {
    //kod
    setTimeout(function() { myFunction() }, 3000);
}

 

komentarz 29 listopada 2015 przez No Lime Gaduła (4,540 p.)
Masz rację. Zatem w jaki inny sposób mógłbym zrobić wykonywanie skryptu co kilka sekund nie zabijając przy tym serwera?
komentarz 29 listopada 2015 przez tomashpl Obywatel (1,370 p.)
Zastanów się, czy nie możesz tego przepisać tak, żeby skrypt wykonywał się całkowicie po stronie klienta, właśnie za pomocą javascriptu. Jeśli potrzebujesz zaciągnąć jakieś dane z bazy, to może trzymaj je w jakimś pliku typu json, a na serwerze tylko generuj go z poziomu PHP za pomocą crontaba, żeby się to robiło cyklicznie...

Wtedy nieco odciążysz parser PHP i bazy danych, co już nie będzie tak zabójcze dla serwera.

Podobne pytania

0 głosów
2 odpowiedzi 943 wizyt
pytanie zadane 20 lipca 2022 w JavaScript przez lukas1231233 Początkujący (260 p.)
0 głosów
0 odpowiedzi 179 wizyt
pytanie zadane 23 maja 2019 w Sieci komputerowe, internet przez Norciu Nowicjusz (140 p.)
+2 głosów
2 odpowiedzi 3,800 wizyt
pytanie zadane 26 września 2019 w C i C++ przez Milo Obywatel (1,180 p.)

93,656 zapytań

142,575 odpowiedzi

323,099 komentarzy

63,171 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...