php im hintergrund starten ohne seiten reload

  • Hallo :)
    wie der titel schon sagt, ich habe zwei php scripte, script A ruft script B, klappt alles wunderbar, B beendet sich nach getaner arbeit selbstständig und ich muss zwangsläufig die seite neu laden. (zur zeit überbrückt ein autoreload der seite nach beendigung von b des manuelle neu laden)

    gibt es einen weg bzw eine funktion die das script in den hintergrund abschiebt und NICHT auf javascript beisert? (also das wenn ich durch einen link/button script b starte nicht mein browser script b aufruft, sondern nur die in b definierte funktion ausführt...) :denker:

    :danke_ATDE:

    lg Tim

    Some people have told me they don't think a fat penguin really embodies the grace of Linux, which just tells me they have never seen a angry penguin charging at them in excess of 100mph. They'd be a lot more careful about what they say if they had."[1996] -Linus Torvalds (*1969) :geek: ~hehxes

  • Was macht Script B denn?
    Mit etwas mehr Informationen wüssten wir auch was zum Henker Du überhaupt vor hast.
    Und ich wette Du könntest hier von einigen eine schönere, besser und ordentliche Lösung bekommen, wenn Du etwas mehr Informationen liefern könntest.

    Was heisst A ruft Script B auf? Require, Include, Exec, System_exec?
    Was macht B denn so tollen? Kann es auch anders gemacht werden anstatt ein PHP Script aus einem PHP Script zu starten?

  • Hi,

    kommt imho drauf an, was die scripte machen.
    Der Normalfall ist, dass der Webserver die php-Anweisungen liest und in HTML umwandelt. Ohne das Aufrufen/laden der Seite geht da nix.
    Wenn keine Ausgabe im Browser erfolgt, könnte man mal versuchen die scripte über CGI aufzurufen.

    cheers,
    -ds-


  • Was macht Script B denn?
    Mit etwas mehr Informationen wüssten wir auch was zum Henker Du überhaupt vor hast.
    Und ich wette Du könntest hier von einigen eine schönere, besser und ordentliche Lösung bekommen, wenn Du etwas mehr Informationen liefern könntest.

    Was heisst A ruft Script B auf? Require, Include, Exec, System_exec?
    Was macht B denn so tollen? Kann es auch anders gemacht werden anstatt ein PHP Script aus einem PHP Script zu starten?

    oh tut mir leid, da hab ich glad den code vergessen anzuhängen :lol:

    also: "script a" gab es schon vorher in form einer website die auf php basiert (jetzt bitte nicht lachen :D ) script b wird durch einen hyperlink von a aufgerufen. Ich weiß sehr billig gemacht, aber zwegmäßig. Bis jetzt ist es so das in der logischen folge script a neu laden muss, das ja script b gestartet wird (welches dan a neu läd)
    "script a" zumindest ein teil davon

    Code
    <br><a href="./py_remote/reverse.php"><img src="./media_sec/reverse.png" width="70" height="70"></a>


    script b ist noch billiger gemacht als a schon, es ruft einfach nur ein weiter script von einem entfernten server auf :D

    PHP
    <?php
    exec("sudo python 'meineurl2:port/reverse.php'"); 
    header("Location:http://meineurl/login_sites/ctl.php"); 
    ?>


    ich habe leider jetzt nicht so viel ahnung von php darum verzeihe mir bitte :blush:

    lg Tim

    PS: bezüglich der sicherheit der php scripte, das habe ich natürlich bedacht, ist hier nur noch nicht drinne :)

    -------------------------------
    EDIT: ausversehen falsches script gepostet, code bitte nochmal lesen :)

    Some people have told me they don't think a fat penguin really embodies the grace of Linux, which just tells me they have never seen a angry penguin charging at them in excess of 100mph. They'd be a lot more careful about what they say if they had."[1996] -Linus Torvalds (*1969) :geek: ~hehxes

    Einmal editiert, zuletzt von hehxes (9. August 2014 um 14:00)

  • Um den Hintergrund zu verstehen siehe seinen vorherigen Thread: php script von remote server starten


    PHP verarbeite ja in erster Linie nur Sache auf dem WebServer. Zur Darstellung für den Client wird aber i.d.R. weiterhin HTML verwendet

    Was du machen könntest wäre einzelne Bereiche deiner Webseite mithilfe von AJAX regelmässig neuladen zu lassen - das erzeugt aber zum einen viele Logeintäge im Webserver-Logfile und zum anderen auch jenachdem wie Umfangreich deine Scripts sind recht viel Last.


    PS: Bitte gewöhn dir ab Beiträge vollständig zu quoten

  • von AJAX hatte ich auch schon gehört, ich halte es aber in meinen augen sinnlos, weil kein bereich der seite aktualisiert (also jetzt grafisch erneuert) werden muss. Es muss nur ein steuer befehl von der seite an den zweiten pi (roboter) gesendet werden, damit dieser eben die gewünschte aktion durchführt.
    es nerv mich zZ das bei durchführung das steuer befehls die komplette html seite neu laden muss (ich hoffe ich konnte mich verständlich ausdrücken :D )

    :)

    Some people have told me they don't think a fat penguin really embodies the grace of Linux, which just tells me they have never seen a angry penguin charging at them in excess of 100mph. They'd be a lot more careful about what they say if they had."[1996] -Linus Torvalds (*1969) :geek: ~hehxes

  • das ist mal ne ansage :) danke ^^ hätte ich jetzt noch ne ahung wie man mit js und co umgeht, würde ich sofort anfangen zu arbeiten...

    kann mir jemand ne gute anleitung verlinken bzw mir starthilfe geben? :danke_ATDE:

    Some people have told me they don't think a fat penguin really embodies the grace of Linux, which just tells me they have never seen a angry penguin charging at them in excess of 100mph. They'd be a lot more careful about what they say if they had."[1996] -Linus Torvalds (*1969) :geek: ~hehxes

  • Mir fällt zum Start eines PHP-Scriptes als erstes chronjob ein. In welchem zeitlichen Abstand soll denn Script B aufgerufen werden?


  • von AJAX hatte ich auch schon gehört, ich halte es aber in meinen augen sinnlos, weil kein bereich der seite aktualisiert (also jetzt grafisch erneuert) werden muss.

    Es muss nur ein steuer befehl von der seite an den zweiten pi (roboter) gesendet werden, damit dieser eben die gewünschte aktion durchführt.

    es nerv mich zZ das bei durchführung das steuer befehls die komplette html seite neu laden muss (ich hoffe ich konnte mich verständlich ausdrücken :D )

    Dann verstehe ich ehrlich gesagt nicht mehr was du eigentlich haben/erreichen willst - weswegen du einen neuen Thread erstellt hast und dein Anliegen im ersten Post anders dargestellt hast als du es Jetzt tust. Dein Anliegen scheint also weiterhin der selbe zu sein wie in deinem anderen Thread - warum du aber das ganze noch mal in einem neuen Thread fragst fängt an zu nerven

    Du machst die Sache komplizierter als es ist...


    @flyppo: crontab fällt flach da er das 2.Script selber ausführen will, manuell...
    Das 2.Script startet die Motoren seines Roboters.... Er hat 2 Roboter, an den ersten sind Motoren usw angeschlossen und auf dem 2. läuft eine Webseite die er zum Steuern des Roboters verwendet...


    Mein letzter Versuch dir zu helfen

    index.php
    [code=php]
    <!DOCTYPE html>
    <html>
    <head>
    <script>
    function executePHP(command) {
    $.get("phpExec.php", { command: command }, function(command){}, "json");
    }
    </script>
    </head>
    <body>
    <button onClick="executePHP('startMotors');">Start Motors</button>
    </body>
    </html>
    [/php]

    phpExec.php
    [code=php]<?php
    if (isset($_GET['command']) AND !empty($_GET['command'])) {
    if ($_GET['command'] == "startMotors") {
    $trash = file_get_contents("http://192.168.0.10/exec.php?".$command."");
    }
    }
    ?>[/php]

  • meigrafd du verstehst mich völlig falsch :/
    1.) ich habe keine zwei roboter, ich habe einen. Der andere pi ist ganz normal stationär (beide sind/besitzen aber einen webserver)

    2. ) ich habe mit abschicht einen neuen Thread aufgemacht, weil das eine mit dem anderen nur indirekt etwas zu tun hat. Bei ersten post gib es um befehle die übergeben werden mussten, hier geht es um das vermeiden des reloads der website, der auftritt, wenn die befehle übergeben werden.

    3.) es tut mir leid das ich nerve, ich bin einsteiger in javascript, und habe keinen plan davon, ich kann ein bisschen php und html. Ich bin dazu gezwungen nachzufragen, weil ich die antworten zT nicht verstehe.

    4.) danke für deinen code, werde ihn ausprobieren

    So nun hoffe ich ich konnte einige dinge klar(er) stellen :)

    so, habe deinen code einszueins übernommen, (bis auf die url) gleiche datei strucktur, gleiche variablen.
    Es geht leider nicht :(

    (der code ist leider auch nicht für meine zwecke geeignet, du versuchst ja eine php datei aufzurufen, was gar nicht sinn der sache ist. die übergabe von werten hatte ich schon es geht jetzt um python, siehe oben. ich habe trotzdem mal die zusätzliche php datei erzeugt und sie auf die python datei angesetzt, geht nicht.)

    ich weis nicht ob ich einfach zu dumm dafür bin jedenfalls bekomme ich deinen code nicht zu laufen.

    :helpnew:

    Some people have told me they don't think a fat penguin really embodies the grace of Linux, which just tells me they have never seen a angry penguin charging at them in excess of 100mph. They'd be a lot more careful about what they say if they had."[1996] -Linus Torvalds (*1969) :geek: ~hehxes

    Einmal editiert, zuletzt von hehxes (9. August 2014 um 16:47)

  • meigrafd leider ging dein code nicht.

    Some people have told me they don't think a fat penguin really embodies the grace of Linux, which just tells me they have never seen a angry penguin charging at them in excess of 100mph. They'd be a lot more careful about what they say if they had."[1996] -Linus Torvalds (*1969) :geek: ~hehxes

  • Ja gut da hab ich mich verschrieben.. 2 Roboter --> 2 Raspberry's ... kann man sich aber auch denken wenn man diesen Thread oder deinen anderen liest


    Das 2.Script startet die Motoren seines Roboters.... Er hat 2 Roboter, an den ersten sind Motoren usw angeschlossen und auf dem 2. läuft eine Webseite die er zum Steuern des Roboters verwendet...


    So wie ich das sehe hat dein erster Thread aber durch aus etwas mit diesem Thread hier zu tun - du machst es dir nur unnötig kompliziert von wegen Rückgabe anzeigen oder nicht, oder etwas ans auszuführende Script übergeben oder nicht ..usw.. Benutz halt ein einziges Script und entscheide über die $_GET was gemacht werden soll, ob das nun was zurück gibt oder nicht spielt doch nur ne zweite Geige da du das im anderen dann ja selber festlegst ob du eine Rückgabe weiter verarbeitest oder nicht...

    Wie ich aber auch schon in dem anderen Thread sagte, wirst du um js nicht drum rum kommen wenn du auf deinem 2.PI irgendwelche Rückgabewerte angezeigt haben willst OHNE die Seite jedesmal neu zu laden. Im Prinzip ist das aber auch nicht wirklich schwer, nur vielleicht über deinen gewählten Weg - denn das hab ich auch sehr schnell wieder in den Trash geworfen da zu umständlich (aber auch zu langsam)


    (der code ist leider auch nicht für meine zwecke geeignet, du versuchst ja eine php datei aufzurufen, was gar nicht sinn der sache ist.

    hää? Also jetzt weiß ich gar nicht mehr was du eigentlich willst - oder weisst du das vielleicht selber nichmals?

    die übergabe von werten hatte ich schon es geht jetzt um python, siehe oben. ich habe trotzdem mal die zusätzliche php datei erzeugt und sie auf die python datei angesetzt, geht nicht.)

    Du musst erst eine php ansprechen, du kannst das python Script nicht direkt aufrufen!

    Um hier auch mal der Verwirrung Herr zu werden:

    • Der RaspberryPI an dem deine Motoren usw angeschlossen ist heißt ab jetzt Roboter-PI
    • Der RaspberryPI über den du den Roboter-PI steuer möchtest heißt ab jetzt Webserver-PI

    Der Code oben ist für deinen Webserver-PI

    Auf dem Roboter-PI brauchst du nur eine exec.php , die dann das python script auf dem Roboter-PI ausführt..

  • Zitat


    Du musst erst eine php ansprechen, du kannst das python Script nicht direkt aufrufen!


    ist klar, das tut ich auch, durch die seiten struktur
    -->

    Zitat


    hää? Also jetzt weiß ich gar nicht mehr was du eigentlich willst - oder weisst du das vielleicht selber nichmals?


    ich weiß, ich habe mich sehr sehr dumm ausgedrückt. villeicht hätte ich das mit an den anfang schreiben sollen :/

    Hier die komplett Übersicht über die gesamten verknüfungen:

    Website.php (script A; soll die steuer befehle ohne reload durch führen) --> fürht aus/läd
    --> steuerbefehle.php (script B; <?php exec("sudo python 'http://meineurl:2206/var/www/py/forward.py'");?> ; zZ auch noch zuständig für reload von A) -->
    --> forward.py (führt python steuerbefehle auf roboter aus)

    So hoffe die ganze sache ist jetzt noch einen ticken klarer

    Mir tut es leid das ich dich verwirrt habe bzw. mich nicht richtig ausgedrück habe, hoffe du nimmst mir das nicht übel

    lg Tim

    Some people have told me they don't think a fat penguin really embodies the grace of Linux, which just tells me they have never seen a angry penguin charging at them in excess of 100mph. They'd be a lot more careful about what they say if they had."[1996] -Linus Torvalds (*1969) :geek: ~hehxes

  • 1.) Du bist ein Gott

    2.) :danke_ATDE::danke_ATDE::danke_ATDE::danke_ATDE::danke_ATDE:

    3.) Der roboter hat bis jetzt 6 funktionen, um die alle hinzuzufühgen, müsste ich

    PHP
    <?php
    if (isset($_GET['command']) AND !empty($_GET['command'])) {
      if ($_GET['command'] == "startMotors") {
        $trash = file_get_contents("http://192.168.0.10/exec.php?".$_GET['command']."");
      }
    }
    ?>


    kopieren und "startMotors" in allen stellen durch eigene begriffe austauschen, oder?

    4.) wie muss ich mit der funktion im header verfahren wenn ich neue php(bzw. python scripte) hinzufühgen will ? einfach

    Code
    <script>
          function executePHP(command) {
            $.get("phpExec.php", { command: command }, function(command){}, "json");
          }
        </script>


    kopieren und umbennen?

    ansonsten nochmal :danke_ATDE: was würde ich ohne dich nur tun :)

    Some people have told me they don't think a fat penguin really embodies the grace of Linux, which just tells me they have never seen a angry penguin charging at them in excess of 100mph. They'd be a lot more careful about what they say if they had."[1996] -Linus Torvalds (*1969) :geek: ~hehxes


  • 3.) Der roboter hat bis jetzt 6 funktionen, um die alle hinzuzufühgen, müsste ich

    PHP
    <?php
    if (isset($_GET['command']) AND !empty($_GET['command'])) {
      if ($_GET['command'] == "startMotors") {
        $trash = file_get_contents("http://192.168.0.10/exec.php?".$_GET['command']."");
      }
    }
    ?>


    kopieren und "startMotors" in allen stellen durch eigene begriffe austauschen, oder?

    Jein.
    Das ganze musst du nicht kopieren, du hast 2 Möglichkeiten:
    - Entweder du legst bzw fragst das bereits auf dem Webserver-PI ab, dann brauchst du aber nur jeweils die if Schleife kopieren
    - Oder du übermittelst das einfach stumpf an den Roboter-PI und machst da die Abfrage - letzteres wäre sinnvoller da du dort sowieso festlegen solltest was gemacht werden soll.

    Du baust das also wie folgt um:

    Webserver-PI --> index.php:

    Spoiler anzeigen

    Webserver-PI --> phpExec.php:

    Spoiler anzeigen


    kopieren und umbennen?
    [/quote]

    Du brauchst nur ein mal <script> öffnen und schließen, du kopierst einfach nur die function. Aber das brauchst du wie gesagt eigentlich nicht da du ja mit einer phpExec.php mehrere Befehle ausführen kannst solange sich der Übergabewert ändern. Siehe oben.

    Du kannst die javascript function aber auch um weitere Übergabewerte erweitern und das ganze weiter ausbauen, das is eigentlich auch kein Problem.. Das hab ich im exec.php auch schon Vorbereitet, halt um den $Wert , weil man kann ja eigentlich command=wert übergeben und auch mehrere aneinander reihen: exec.php?command=wert&command2=wert2&command3=wert3 usw

  • Hi ihr zwei, drei oder wie auch immer ...


    warum sollte man einen python-script nicht direkt aufrufen können?
    Wenn ich in meinem cgi-bin einen shellscript (nennen wir ihn sscript.sh) anlege, der folgenden Inhalt hat:

    Bash
    #!/bin/bash
    #
    echo "<html>"
    echo "<body>"
    echo "scrippt !!"
    echo "</body></html>

    den script anschliessend mit chmod 755 ausführbar mache, dann kann ich direkt im Browser

    http://raspberry-pi/cgi-bin/sscript.sh

    das shellscript aufrufen.
    Warum sollte das mit python nicht auch funktionieren?
    Oder auch direkt php? Wenn der Interpreter installiert ist, sollte imho auch das gehen (sudo apt-get install php5)

    //EDIT: Ich hab' lighthttpd installiert. Das ist evtl der Grund, warum ich ums verrecken kein ausführbares Programm php installiert kriege.
    // Der Clou: der Interpreter ist vorhanden, liegt aber unter /usr/lib/cgi-bin/. Da fürht natürlich kein Pfad hin :) ...
    // Also aufpassen beim scripte erstellen (Pfadangabe nach hashbang)

    cheers,
    -ds-

  • Gut geht Alles :)
    Danke an dieser Stelle nochmal das du mir das programiert hast obwohl ich ein bisschen ( :D ) stressig war.

    Du hast definitiv was gut bei mir :danke_ATDE:

    lg Tim

    Some people have told me they don't think a fat penguin really embodies the grace of Linux, which just tells me they have never seen a angry penguin charging at them in excess of 100mph. They'd be a lot more careful about what they say if they had."[1996] -Linus Torvalds (*1969) :geek: ~hehxes

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!