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:

  • Und wie genau kann ich das machen?
    Finde aktuell nur Befehle, die dann eine ganze Datei zu einer bestimmten Zeit ausführen.

  • 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.

  • Ja das Ding ist halt dass in der Datei nicht nur diese Abfrage drin ist, sondern auch noch andere, die nicht alles 3 Stunden ausgeführt werden sollen

  • 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.

    Einmal editiert, zuletzt von MarvinTLA (21. Oktober 2021 um 20:02)

  • 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.

  • Aber bei alleFehler ist das Problem

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

  • 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/09/php-in…iemals-ohne-dir

  • Nein alle Dateien sind im selben Verzeichnis aber unterschiedliche Namen

    Und die variable allefehler nutze ich in jeder Datei dort wird nur :seite geändert

  • Hast du Post #6 übersehen? Was dein aktuelles Script macht ist völlig wurscht. Wenn du per Cron-Job deine Aufgaben ausführen lassen willst, dann schreibe ein Script, das sich genau darum kümmert.

  • 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:

    Einmal editiert, zuletzt von basti1012 (23. Oktober 2021 um 15:34)

Jetzt mitmachen!

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