PHP exec im Hintergrund
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
-
Bin völlig neu bei php exec und verwandten Funktionen.
Meine Überlegung ist: Anstatt haufenweise Cronjobs bei LC abzulegen, kann ich diese per exec im Hintergrund aufrufen und über einen URL Cronjob starten.
Könnte mich jemand erst einmal aufklären, ob diese Überlegung korrekt ist oder ob es bessere Alternativen gibt?
Exec funktioniert erst einmal auch, nur kriege ich es nicht hin, es im Hintergrund laufen zu lassen, was aber sein muss, weil es sonst nicht parallel läuft und dann die maximale Laufzeit überschritten wird.
Nehmen wir an ich möchte die Datei test.php im Hintergrund laufen lassen.
Was habe ich falsch gemacht?exec('php test.php &');
Lg danke
Beitrag zuletzt geändert: 8.3.2021 21:46:25 von mehralsnurradio -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wird sowieso nicht im Hintergrund laufen weil du irgendwann an die Scriptlimits stoßen wirst.
-
Naja, sofern es der eigenen Rechner ist oder die Zugriffsrechte passen, könntest du unter Linux versuchen, mittels exec nohup zu verwenden, um ein Programm in den Hintergrund zu schieben.
Wenn du per exec ein Programm aufrufst, wird dies ja erst durchgenudelt, bevor der Rest vom PHP-Skript interpretiert wird.
Wird das PHP-Skript entsprechend über den Apachen aufgerufen, unterliegt es ja einer maximalen Verarbeitungszeit (die in der Konfiguration einstellbar ist), danach wird es samt des exec abgebrochen.
Das ist also nichts für Sachen, die länger brauchen oder gar auf etwas warten.
Ein Programm, welches über nohup in den Hintergrund geschoben wird, sollte allerdings ein natürliches Ende haben, sonst wird es eventuell erst bei einem Neutstart etc beendet.
Sonst muß man die Prozeßnummer herausfinden, den Prozeß eben killen, wenn man es beenden will.
Sofern du den Zugriff hast, sind cron-jobs aber ohnehin sinnvoller, um zu bestimmten Zeiten etwas zu erledigen. Damit lassen sich ja auch durchaus ganz unabhängig vom Apachen PHP-Skripte oder andere Skripte beliebiger Komplexität aufrufen, um etwas zu erledigen.
Anmerkung: Selber probiert habe ich es nicht, wie nohup zusammen mit exec von PHP agiert, bislang habe ich das bloß so von der Konsole verwendet, wenn Programme weiterlaufen sollten, auch ohne Anmeldung des jeweiligen Nutzers. -
muellerlukas schrieb:
Wird sowieso nicht im Hintergrund laufen weil du irgendwann an die Scriptlimits stoßen wirst.
Welche Scriptlimits? -
mehralsnurradio schrieb:
muellerlukas schrieb:
Wird sowieso nicht im Hintergrund laufen weil du irgendwann an die Scriptlimits stoßen wirst.
Welche Scriptlimits?
Die Scriplimits die du hier in den Webhosting-Paketen hast, siehe hier: https://www.lima-city.de/hilfe/welche-php-limits-sind-eingestellt
Wenn du einen eigenen VPS hast oder das lokal laufen hast: Klar, dann geht das ohne Scriptlimits.
Dann legst du aber auch die Cronjobs nicht über das LC-Webinterface fest.
Beitrag zuletzt geändert: 11.3.2021 11:29:12 von muellerlukas -
Verstehe den Punkt aber nicht, die Limits sind doch auch irgendwann bei Cronjobs erreicht?
Ich werde das ganze jetzt einfach so lösen dass ich Cronjobs bei LC anlege auf eine Seite mit verschiedenen URL Parametern, über die dann per Include das passende Script eingebunden wird.
Sollte ich dafür lieber include oder file_get_contents benutzen?
Beitrag zuletzt geändert: 13.3.2021 18:30:34 von mehralsnurradio -
Natürlich gilt das auch für die Cronjobs.
Aber halt pro Aufruf.
Wenn du jetzt alle in ein Script packst hast du halt die Begrenzung halt einmal für alle Jobs die anstehen. Finde ich nicht sinnvoll. -
Mir geht es eher darum, die cronjobs besser und für mich einfacher zu managen, nicht darum das Limit zu erhöhen.
Meine Idee war, 9 Cronjobs bei LC anzulegen auf eine Datei cronjob.php?p=X und als X durchnummeriert.
Die cronjob.php soll dann einfach prüfen, welche Uhrzeit ist und anhand dessen eine oder auch mehrere PHP Dateien einzubinden.
Das Script Limit wäre dann ja nicht mehr ausgelastet als sonst, weil die Scripts HINTEREINANDER laufen.
Oder?
Weiterhin bleibt die Frage, welche Funktion ich zum einbinden bzw. starten des Scripts benutzen soll. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage