Ferngesteuertes Neuladen der kompletten Webside

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ferngesteuertes Neuladen der kompletten Webside

    Moin Coder,
    ich betreibe in unserer Firma ein webbasiertes Schichtbuch (MySQL, PHP, JS (jQuery, Ajax), HTML...)
    Auf einigen Rechnern ist diese Seite dauernd geöffnet. Wenn ich nun Änderungen am Code vornehme, bekommen diese Rechner das nicht mit.
    Jetzt suche ich nach einer Möglichkeit diesen Rechnern mitzuteilen, dass sie die komplette Seite neu laden sollen ohne den Cache zu benutzen.
    Hat von Euch einer eine Idee?
    Beim Tippen kommt mir grad die Idee mit einem Datumsvergleich Datenbank<-->geladener HTML-Code
    Aber wie leere ich auf Client-Seite den Cache und lade neu?
  • Guten Morgen und willkommen auf easy-coding.de :)

    Das ganze würde ich per AJAX realisieren, indem du ein PHP-Script erstellst, das prüft ob es neue Daten seit einem letzten definierten Zeitpunkt gibt. Das kann per extra SQL-Tabelle geschehen, in der du einen extra Eintrag erstellst, wenn Änderungen gemacht werden. Die Tabelle würde in etwa so aussehen:


    id
    updated
    1
    1398309672
    2
    1398316872
    3
    1398324072


    Beim ersten Laden sprich beim ersten Aufruf des Schichtplans, liest du einfach aus der Tabelle die letzte ID der Tabelle mit dem höchsten Zeitstempel aus und gibst sie aus, dass du sie mit Javascript bzw. jQuery verarbeiten kannst. Jetzt sendest du in einem bestimmten Intervall (z.B. eine Minute) immer wieder per AJAX an das Script (update_check.php) die ID des Zeitstempels. Das Script prüft, ob in unserer Update-Tabelle ein Eintrag mit einer höheren ID vorhanden ist. Wenn dies der Fall ist, gibt das Script einfach nur "reload" aus, andernfalls "nothing". Diese Ausgabe verarbeiten wir auf unserer bereits geladenen Seite. Sollte "reload" von unserem AJAX-Request zurückgegeben wird, wird die Seite komplett neugeladen.

    JavaScript-Quellcode

    1. // index.php
    2. /*
    3. <!DOCTYPE html>
    4. <html>
    5. .
    6. .
    7. .
    8. */
    9. <script type="text/javascript">
    10. var lastID = <?php echo $database->getLastUpdateID() ?>; // Hier musst du deine eigene Funktion implementieren, um Daten aus der Datenbank zu bekommen
    11. // Funktion, die immer wieder aufgerufen wird und Anfragen an das PHP-Script schickt
    12. function checkForUpdate()
    13. {
    14. $.post('update_check.php', {id: lastID}, function(data) {
    15. if($.trim(data) == 'reload') {
    16. window.location.href = window.location.href; //Seite neu laden
    17. }
    18. });
    19. }
    20. window.setInterval(checkForUpdate, 10000); // Alle 10 Sekunden, wird die Funktion aufgerufen und eine POST-Anfrage an check_update.php geschickt
    21. </script>
    22. /*
    23. <body>
    24. .
    25. .
    26. .
    27. */
    Alles anzeigen


    PHP-Quellcode

    1. // update_check.php
    2. <?php
    3. // Wenn keine ID übergeben wurde, wird das Script warscheinlich direkt aufgerufen und nicht vom Javascript aus.
    4. if(!isset($_POST['id'])) {
    5. die('error');
    6. }
    7. if($database->getLastUpdateID() != $_POST['id']) {
    8. die('reload');
    9. }
    10. die('nothing');
    Alles anzeigen



    Ich glaube das war das ganze. Hoffentlich ist es verständlich formuliert. Wenn noch Fragen bestehen, grade nachfragen. ;)


    Linksammlung zum nachschlagen:
    • https://api.jquery.com/jQuery.post/
    • https://api.jquery.com/jQuery.trim/
    • http://www.mediacollege.com/internet/javascript/page/reload.html


    Gruß
    Active Record
  • Hallo Active Record,
    danke für die schnelle und ausführliche Antwort.
    Genau so werde ich es machen. Ich werde meine Hystory-Tabelle benutzen in der ich meine Änderungen dokumentiere.
    Wenn sich dort die id ändert --> Neuladen.
    Das motiviert mich dann auch noch jede Änderung zu dokumentieren, was ich momentan etwas vernachlässige.

    Gruß
    ElektroRudi

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ElektroRudi ()