IF Abfrage alle 3 Stunden ausführen

  • Moin,


    gibt es eine Möglichkeit eine IF Abfrage alle 3 Stunden auszuführen?
    Habe in mehreren Dateien eine Abfrage ob die Verbindung zu meinem Linux Server vorhanden ist.


    Wenn die Verbindung nicht vorhanden ist, wird ein Datenbank Eintrag erstellt.
    Wenn die Verbindung Vorhanden ist und bereits ein Datenbank Eintrag vorhanden ist, wird dieser wieder gelöscht.


    Allerdings wird ist diese Abfrage in einer Datei drin, die von einem Ajax aufgerufen wird.
    In dem Fall "createFolder.php". Trotzdem würde ich gerne alle 3 Stunden Checken ob die Verbindung vorhanden ist, ohne ständig die ganze Datei ausführen zu müssen.



    Hat da jemand einen Tipp?


    Hier der Code:


  • Ganz genau so sieht es aus.
    Du sagst dem Server "hey, führe bitte alle (X Minuten / jeden 1. im Monat / usw.) folgenden Code aus: (php Script ausführen / URL aufruf / usw..)" und dann macht der Server das automatisch.
    Falls dein Hosting das nicht unterstüzt, kannst du dir mit einer freien Alternative zumindest URL Aufrufe (welche ja auch ein php Script ausführen können) machen: https://cron-job.org/de/


    In deinem Script führst du dann deinen Check aus und nicht mehr. Und dieses Script lässt du dann immer wieder aufrufen, fertig.

  • Würde es also reichen diesen Teil:



    In eine Extra Datei zu tun, z.b verbindungsTest.php


    Und dann die anderen Datein. (Hab ja mehrere mit unterschiedlichen Namen, wo ebenfalls dieser Test ausgeführt wird) so zu machen?



    Und dann alle 3 Stunden "verbindungsTest.php" neu aufrufen?

    Und das halt für alle weiteren Dateien genau so?



    // Edit

    Funktioniert nicht wirklich. Wenn ich selber die verbindungsTest.php aufrufe, gibt es mir den HTTP Error 500 aus.

  • Das ist nicht verwunderlich, denn die Variablen $sftp, $alleFehler und $deleteError werden ja in dem Skript für den Cronjob gar nicht definiert. Du musst die Codeabschnitte, die das tun, ebenfalls übernehmen.

  • Ich habe das ganze in mehreren Dateien diese variable. Also unterschiedliche Einträge bei dem Eintrag Seite.

    Sind die Dateien in verschiedenen Ordners?

    Zb mal im Root , oder in /bla/bla/hier.php usw...


    Dann könnte ich mir vorstellen das deine Pfade dann Mist sind

    Code
    include('basics.php');
    include("verbindungsTest.php");

    Wenn du diese Datei aus dem Ordner rausnimmst und in einen anderen Ordner einbindest , ist der Pfad ja nicht mehr richtig.

    Falls ich recht habe könnte dir etwas Input helfen

    https://www.ermshaus.org/2012/…includes-niemals-ohne-dir

  • Der Name dieser PHP-Datei liest sich doch viel versprechend: verbindungsTest.php Poste doch mal den Code darin, damit wir prüfen können, ob er geeignet ist.

    Ist halt das Thema das hier:


    Code
    $selectFehler = $dbv->prepare("SELECT fehlerId, fehlerCode, seite FROM fehler WHERE fehlerCode = 1 AND seite = :seite");
    $selectFehler->execute([":seite" => "createFolder.php"]);
    $alleFehler = $selectFehler->fetchAll(PDO::FETCH_ASSOC);

    bei $selectFehler->execute([":seite" => "createFolder.php"]); immer eine andere Datei "seite" steht. z.b createFolder.php, createUser.php etc.
    Die Datei "verbindungsTest.php" würde ich halt auch in diesen Dateien einbinden.
    Deswegen weiß ich nicht ob ich den Teil in der verbindungsTest.php drin lassen kann.

  • Ich habe mal einen Blick in die Doku geworfen:

    https://www.php.net/manual/de/function.ssh2-sftp.php

    U. U. könnten diese Zeilen schon ausreichen um die Verbindung zu testen:

    Code
    # Verbindung zum PI herstellen #
    $connection = ssh2_connect('xxx.xxx.xxx.xx', 22);
    ssh2_auth_password($connection, 'xxx', 'xxx');
    $sftp = ssh2_sftp($connection);
    Zitat

    This method returns an SSH2 SFTP resource for use with all other ssh2_sftp_*() methods and the ssh2.sftp:// fopen wrapper, Bei einem Fehler wird false zurückgegeben..

    Prüfe ob $sftp auf false geht, wenn der PI nicht erreichbar ist.

  • Das funktioniert auch.


    Aber er muss ja auch irgendwie die Fehler wieder aus der Datenbank löschen.

    Das macht er ja in diesem Teil.



    Aber wenn ich diesen Teil noch hinzufügen in die Datei verbindungsTest.php dann macht er das nicht, weil er die Variable $alleFehler nicht hat.
    Und diese Variable hat halt unterschiedliche Werte (:seite), weshalb ich die nicht auch noch dort hinzufügen kann.

    In dem cronjob rufe ich ja ständig die Seite "verbindungsTest.php" auf.

  • Und diese Variable hat halt unterschiedliche Werte (:seite), weshalb ich die nicht auch noch dort hinzufügen kann.

    Wie viele unterschiedliche Werte hat die :seite den?

    Dann pack das doch in ein Array , und die Datei rufst du dann mit dem cron ab ,da.

    Dann hast du doch alles in einer Abfrage , oder geht das so auch nicht?

    Psydo Code:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!