php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.05.2007, 01:08  
Neuer Benutzer
 
Registriert seit: 08.06.2003
Beiträge: 21
Olsen
Standard Umfangreicheres Skript im Hintergrund

Hi,

ich bräuchte mal Euren Rat.

In einer Applikation soll eine Sammeländerung über viele Artikel in der Datenbank durchgeführt werden. Da dies mitunter sehr lange dauern kann (viele Artikel) möchte ich, dass der User im Browser den Befehl dazu nur startet, dann aber nicht warten muss, bis die Aufgabe erledigt ist. Davon mal abgesehen würde es bei sehr vielen Artikeln zum Timeout kommen.

Ich würde mir nun vorstellen, dass der User die zu ändernden Artikel auswählt, die zu machenden Änderungen einstellt und aufs Knöpfchen drückt. Jetzt weiss ich nicht so recht weiter.

Meine Idee ist so in etwa, dass ein Cronjob alle X Minuten in einer Datei oder Tabelle in der Datenbank nachschaut, ob neue Aufgaben zu erledigen sind und diese dann abarbeitet. Wäre das eine praktikable Lösung?

Oder kann ich den Prozess irgendwie "forken" und im Hintergrund starten, während der Benutzer im Browser weitermachen kann? (exec, system?) Vom Prinzip kommt mir das sauberer vor, weil man sich den Cron sparen kann.

Vielleicht kann mir ja jemand nen Tipp aus der Praxis geben. Vor- und Nachteile usw.

Bonusfrage: Kann man von PHP aus irgendwie Cronjobs programmieren? Wäre nett, wenn man das im Browser konfigurieren könnte.

Danke
Olsen ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.05.2007, 08:57  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Olsen,

Zitat:
Meine Idee ist so in etwa, dass ein Cronjob alle X Minuten in einer Datei oder Tabelle in der Datenbank nachschaut, ob neue Aufgaben zu erledigen sind und diese dann abarbeitet. Wäre das eine praktikable Lösung?
Das ist eine recht weit verbreitete Möglichkeit soetwas zu lösen. Es ist nur sicherzustellen, dass der Job nur einmal ausgeführt und während der Ausführung gelockt bleibt. Sonst riskierst du Dateninkonsistenz.


Zitat:
Oder kann ich den Prozess irgendwie "forken" und im Hintergrund starten, während der Benutzer im Browser weitermachen kann? (exec, system?) Vom Prinzip kommt mir das sauberer vor, weil man sich den Cron sparen kann.
Hierzu gibt es die pcntl_*-Funktionen in PHP. Man kann hier einen Prozess im Hintergrund ablaufen lassen. Eine Möglichkeit Timeouts vorzbeugen ist diesen mit

Code:
set_time_limit(1800)
zu verlängern.


Zitat:
Bonusfrage: Kann man von PHP aus irgendwie Cronjobs programmieren? Wäre nett, wenn man das im Browser konfigurieren könnte.
Ein Cronjob in PHP ist nichts anderes als ein PHP-Skript, das von aussen aufgerufen wird (HTTP oder CLI). Du kannst hier auf alle Funktionen zugreifen, die du sonst auch nutzt. Viele Hoster geben dir die Möglichkeit einen Cronjob selbst in der Config-Oberfläche einzutragen, bei anderen kann cronjob.de eine Lösung sein.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 24.05.2007, 23:03  
Neuer Benutzer
 
Registriert seit: 08.06.2003
Beiträge: 21
Olsen
Standard

Hi Dr. E.

sorry für die verspätete Antwort.

Zitat:
Ein Cronjob in PHP ist nichts anderes als ein PHP-Skript, das von aussen aufgerufen wird (HTTP oder CLI). Du kannst hier auf alle Funktionen zugreifen, die du sonst auch nutzt. Viele Hoster geben dir die Möglichkeit einen Cronjob selbst in der Config-Oberfläche einzutragen, bei anderen kann cronjob.de eine Lösung sein.
Ich bin nicht sicher, ob ich Dich da richtig verstehe. Meine Frage war, ob ich per PHP die Cronjobs des Cron-Dämons bearbeiten/beeinflussen kann (crontab)? Die Rechte sind kein Problem, ich hab nen Root-Server am Start.

Mir kam noch ein anderer Gedanke: Ein Skript, welches in eine Endlosschleife geht, sollte im Hintergrund gestartet werden. Dieses würde dann alle X Sekunden schauen, ob es eine Aufgabe zu erledigen gibt. Gut oder Böse?

Danke nochmal
Olsen ist offline   Mit Zitat antworten
Alt 25.05.2007, 13:50  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Olsem,

Zitat:
Ich bin nicht sicher, ob ich Dich da richtig verstehe. Meine Frage war, ob ich per PHP die Cronjobs des Cron-Dämons bearbeiten/beeinflussen kann (crontab)? Die Rechte sind kein Problem, ich hab nen Root-Server am Start.
Du kannst mit den system()-Befehlen und Derivaten die crontab deines Benutzers mit den entsprechenden Befehlen (crontab, etc.) bearbeiten, aber das ist unsauber. Wenn du schon einen Root-Server hast, trag in die crontab einfach dein PHP-Script ein und lasse es alle 5 Min ausführen.


Zitat:
Mir kam noch ein anderer Gedanke: Ein Skript, welches in eine Endlosschleife geht, sollte im Hintergrund gestartet werden. Dieses würde dann alle X Sekunden schauen, ob es eine Aufgabe zu erledigen gibt. Gut oder Böse?
BÖSE. Besser ist die oben skizzierte Lösung.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 25.05.2007, 14:01  
Neuer Benutzer
 
Registriert seit: 08.06.2003
Beiträge: 21
Olsen
Standard

Hi,

mein Ziel war/ist eigentlich, dass man über die Weboberfläche einfach conrjobs einstellen kann, ohne Ahnung von der Materie zu haben. Der Benutzer wird durch alle Einstellungen geführt und kann/soll nichts falsch machen.

Deswegen meine Fragen (hätte ich vielleicht erwähnen sollen, sorry). Ist es nicht so, dass man mit Plesk & Co. solche Einstellungen auch machen kann? Da muss es ja so einen Mechanismus geben.

Grütze
Olson
Olsen ist offline   Mit Zitat antworten
Alt 25.05.2007, 14:13  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Ja, kann man
Zitat:
Zitat von dr.e.
Du kannst mit den system()-Befehlen und Derivaten die crontab deines Benutzers mit den entsprechenden Befehlen (crontab, etc.) bearbeiten, aber das ist unsauber. Wenn du schon einen Root-Server hast, trag in die crontab einfach dein PHP-Script ein und lasse es alle 5 Min ausführen.
Genügend Rechte vorrausgesetzt kannst du per system() und Co alles machen, was auch per Konsole geht.
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline   Mit Zitat antworten
Alt 25.05.2007, 21:50  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von Olsen
mein Ziel war/ist eigentlich, dass man über die Weboberfläche einfach conrjobs einstellen kann, ohne Ahnung von der Materie zu haben. Der Benutzer wird durch alle Einstellungen geführt und kann/soll nichts falsch machen.
Du kannst den Benutzer doch ohne weiteres fertige Skripte zusammenstellen lassen, die dann zu einer bestimmten Uhrzeit chronologisch ausgeführt werden. Ein Cronjob, den du alle 5 Minuten laufen läßt, führt dann aus, wenn bzw. wann es was auszuführen gibt.
Zergling-new ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Skript ausführen max-dhom PHP Tipps 2008 5 13.04.2008 12:39
Skript auf einem anderen Server! aha_01 PHP Tipps 2008 3 05.12.2007 09:02
Startup Skript m_haussner Datenbanken 3 10.10.2007 20:56
.htpasswd (im geschützten Ordner!) per skript ändern! Funky_ PHP Tipps 2006 8 22.07.2006 18:03
ein Skript startet ein zweites... ajo_silent PHP-Fortgeschrittene 8 03.05.2006 13:42
Skript "tarnen"? Off-Topic Diskussionen 17 07.08.2005 19:42
Ein php skript aus einem anderen skript heraus aufrufen PHP Tipps 2005-2 8 06.08.2005 20:23
Fehler mit Hintergrund bei DIV's - Im Firefox - Help me :-( HTML, Usability und Barrierefreiheit 20 27.05.2005 10:39
Javascript - CountUP Skript zählt falsch.. Chr!s HTML, Usability und Barrierefreiheit 0 28.03.2005 14:32
[Erledigt] php skript ruft anderes php skript auf PHP-Fortgeschrittene 7 09.01.2005 23:06
[Erledigt] problem mit login skript | mysql | cookie PHP Tipps 2004-2 13 07.12.2004 19:01
Proxy Skript gesucht. Beitragsarchiv 2 12.11.2004 12:02
SKRIPT GESUCHT - Werbung auf einer site anzeigen Beitragsarchiv 4 29.08.2004 14:07
Skript Meldeformular PHP Tipps 2004 8 27.07.2004 18:00
[Erledigt] Php skript upload problem! PHP Tipps 2004 2 30.06.2004 00:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php script im hintergrund ausführen, cronjob programmieren, php funktion im hintergrund, php funktion im hintergrund laufen lassen, cronjob selber programmieren, php cronjob programmieren, php im hintergrund ausführen, php funktion hintergrund, php skript im hintergrund ausführen, php script ausführen hintergrund, php script im hintergrund aufrufen, php befehl im hintergrund, php script ausführung verlängern, cronjob selbst programmieren, php-scripte im hintergrund ausführen, php script im hintergrund laufen lassen, php funktionen im hintergrund, crontab skript programmieren, cronjob programmieren php, funktion im hintergrund php

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:27 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.