php aktualisieren verhindern

  • Hallo,
    wenn ich diese Seite aktualisiere nachdem ich "öffnen" oder "schließen" drücke dann startet das Python-Programm nochmal...


    Wie kann ich denn das machen das die Python-Skripte nur über die Buttons aufgerufen werden?

  • Ist jetzt nur eine Vermutung, aber ID ist gesetzt. Teste es mal mit !empty:



  • Die Vermutung bleibt ne Vermutung - das ändert nix an der Problematic


    $_GET wird ja über die Adressleiste übergeben. Wenn man also die Seite reloaded wird der ?id=4.1 erneut übergeben und somit trifft isset(_$GET[id]) oder !empty(_$GET[id]) weiterhin zu
    Allerdings wäre nur ein !empty unsauber programmiert denn wenn das garnicht gesetzt ist würde das ständig Fehlermeldungen ins Log erzeugen - also wenn dann bitte auf isset prüfen oder eine kombination:
    if (isset(_$GET[id]) AND !empty(_$GET[id])) { ...


    Das gilt aber auch für $_POST -> Wenn man F5 drückt (page reload) werden die Daten erneut übermittelt



    Verhindern könnte man das imho indem man in der ProzessListe prüft ob das Script bereits ausgeführt wird (sofern es im Background weiter läuft) und wenn das der Fall ist ein erneutes ausführen verhindern


    Aber ich vermute mal dass das Script nur ein mal kurz ausgeführt wird und sich danach beendet? Dann wäre es sinnvoller eine temporäre Datei zu speichern und diese zu prüfen.
    Also zum Beispiel erzeugt man bei Tor_auf.py eine Datei: /tmp/tor_auf
    Wenn man dann auf den "öffnen" Link klickt würde das php Script prüfen "existiert die Datei /tmp/tor_auf ? Wenn ja -> Zeige an 'Tor ist bereits auf!' und schluss"
    Beim ausführen von Tor_zu.py müßte dann geprüft werden ob /tmp/tor_auf existiert, wenn ja diese löschen und dann /tmp/tor_zu erzeugen...


  • Danke für die Hilfe.
    Es funktioniert soweit aber:
    Wenn ich das Tor über den Pi öffne und beispielsweise per Hand über die Fernbedinung schließe kann ich es über den Pi nicht mehr öffnen da ja in der temporären Datei steht das es geöffnet ist

  • Ja, das ist wohl so....
    Du könntest dem Pi Augen verpassen.


    Ok, keine Augen, aber Schalter, an denen er merkt ob das Tor auf oder zu ist.
    Denn Telepathie ist unter Raspberrys nicht so weit verbreitet.
    [hr]
    Ja, das ist wohl so....
    Du könntest dem Pi Augen verpassen.


    Ok, keine Augen, aber Schalter, an denen er merkt ob das Tor auf oder zu ist.
    Denn Telepathie ist unter Raspberrys nicht so weit verbreitet.


  • Wenn ich das Tor über den Pi öffne und beispielsweise per Hand über die Fernbedinung schließe kann ich es über den Pi nicht mehr öffnen da ja in der temporären Datei steht das es geöffnet ist


    Tja woher soll der PI das dann auch wissen?


    Wie combie schon sagte müsstest du für diesen Fall dann Kontakte anbringen die der PI überprüfen/abfragen kann, zum Beispiel -> Wenn GPIO17 auf HIGH is ist das Tor zu, wenn GPIO17 offen also LOW dann ist das Tor offen.... Dementsprechend erweiterst du dann das PHP Script

  • Habe an GPIO 17 einen Sensor der erkennt ob das Tor offen ist. Habe mir gedacht das reicht wenn ich es im Python-Skript einbringe.


    Könnt ihr mir einen Vorschlag für das PHP-Skript machen?