| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer Registriert seit: 21.05.2008
Beiträge: 387
![]() | Achso, es geht nur um die Abbildung der Crontab auf die DB, nicht um das System, welche Daten da ausgelesen werden sollen... Also ich habe das so gemacht, dass ein Script jede Minute aufgerufen wird und aus einer Tabelle die entsprechenden Cronjobs sucht, die in dieser Minute wieder "fällig" sind. Spalten: - UID - Cronjob - LastRun - NextRun - Status (ACTIVE/INACTIVE) - Running (TRUE/FALSE) - Cycle Wenn der Cronjob auf "ACTIVE" steht, ist er - logischerweise - aktiv und kann ausgeführt werden. Der Punkt "NextRun" gibt an, ob der Zeitpunkt des nächsten Aufrufs bereits erreicht ist ("<=NOW()"). In Cycle habe ich die Anzahl Minuten bis zum nächsten Start stehen und trage dann entsprechend eine Datum-Uhrzeit-Kombi in "NextRun" ein. Damit verhindert wird, dass manche Crons mehrfach gestartet werden, wird der Status "Running" am Anfang des Cronjobs auf TRUE gesetzt und nach Beendigung wieder auf FALSE. |
| | |
| | |
| da schreibt der ElePHPant Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() | So könnte man es auch machen. Aber wieso sollte es nicht funktionieren wenn du den Crontab direkt abbildest? Du kannst doch entweder eine Zahl oder ein * speichern. Und dann kannst du eben auslesen: Code: SELECT id
FROM crontabs
WHERE
(m = '20' OR m = '*') AND
(h = '11' OR h = '*') AND
(day = '24' OR day = '*') AND
(month = '9' OR month = '*') AND
(wday = '3' OR wday = '*')
Bei dem Beispiel wäre jetzt der Cronjob am 24.9. um 11:20 ausgeführt werden (Wochentag 3). Und wenn jetzt ein Cronjob so gespeichert wurde zu jeder Stunde und zur 20ten Minute ausgeführt zu werden dann hast du in der DB den Eintrag: m = 20 h = * d = * month = * wday = * Sollte doch funktionieren? |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 21.05.2008
Beiträge: 387
![]() | Dann würde ich empfehlen statt des "Cycle" eine zweite Tabelle anzulegen, in der die User ihre Wünsche eintragen können (Wochentag, Stunde, Minute) und dann statt "NOW()+Cycle" (um es vereinfacht auszudrücken) einfach geprüft wird, welches dieser Daten als nächstes zutreffend ist und dieser Zeitpunkt eingetragen wird. Schwierig ist es nicht zu realisieren, da in erster Linie nur geprüft werden muss, welcher Tag heute ist und welcher der nächste Tag von den entsprechenden Möglichkeiten ist. Sollten an diesem Tag dann nicht mehrere Möglichkeiten zur Verfügung stehen, war es das schon mit der Sortierung, ansonsten anhand der Uhrzeit eben noch eine zweite Selektierung vornehmen und fertig!? |
| | |
| | ||
| Erfahrener Benutzer Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse: Anfänger ![]() | Zitat:
__________________ "Nobody is as smart as everybody" - Kevin Kelly — The best things in life aren't things | |
| | |
| | |
| Neuer Benutzer Registriert seit: 28.07.2008
Beiträge: 12
![]() | also ich weiß schon, was Du tun willst. Ich habe in einem speziellen BackOffice ebenfalls etwas ähnliches gemacht. Ich habe ein PHP Script geschrieben, dass das aktuelle Datum erfasst und in der Datenbank nachsieht, ob ein Kunde Geburtstag hat. Wenn ja bekommt er eine Video eMail als Geburtstagsgruß. Jedoch brauchst Du kein Script dass abfragt, welche Funktion gerade abgearbeitet werden muss, denn dass macht Cron sowieso schon automatisch - jedenfalls auf einem UNIX / LINUX System. Cron auf einem Windowssystem gibt es glaube ich gar nicht. Oder Mickysoft hat da wieder irgend wo was geklaut und sein Lable draufgeschraubt und als eigenes Gedankengut verkauft. (Siehe die Storry Microsoft gegen Quicktime). Du musst nur eins bewerkstelligen können: ein Script schreiben, dass eine Datei erstellt / bearbeitet / schreibend erweitert, welches die "Cronjobs" Deiner Kunden in die Datei einträgt, oder in eine Datenbank. Letzteres würde jetzt wieder eine Datei erfordern, welches die Datenbank ausliest und daraus eine Cronjob Datei erstellt. Tja und nun kommen die dämlichen Dateirechte ins Spiel. Jetzt musst Du einen Weg finden, die Datei in den Cronjob Ordner des Servers zu befördern, oder einen Weg, dass die erstellte Datei in irgend einem Verzeichnis liegen kann und über einen Umweg in eine bestehende Cron Datei importiert wird. Apache macht das so mit seinen Config Dateien. Wenn ich Subdomains auf meinem Server anlegen muss, schreibe ich die ganzen Anweisungen in eine separate Datei und in der http.conf Datei verwende ich "INCLUDE" oder "IMPORT" Dateiname, um diese gewissen Anweisungen mit verarbeiten zu können. Jedoch weiß ich nicht, ob das bei Cron funktioniert. Wenn nicht, musst Du den WWW-Daemon das Recht verpassen, in dem Cron Verzeichnis schreiben zu dürfen. Dann kannst Du z.B. in das Verzeichnis CRON eine Datei abspeichern (irgend ein Dateinamen - es spielt keine Rolle welcher), die von Cron abgearbeitet wird. Es gilt auch noch zu beachten, dass es verschiedene Möglichkeiten gibt, diese Datei auszuführen: cron.dayly = täglich cron.month = monatlich cron.weekly = wöchentlich cron.year = jährlich In diesen Subs werden zwar Uhrzeit beachtet, aber unzureichend das Datum genutzt bzw. man ist an starre Daten gebunden. Besser kann man im reinen cron Ordner arbeiten, der keine "Punkt Datum" Anweisung im Dateinamen beinhaltet, weil in der jeweiligen Datei die entsprechenden Anweisungen stehen können. Wie die Anweisungen lauten, solltest Du lieber über googlen rausfinden, mit "cron anweisungen". Da wird dir schon einiges geboten. Wie man Dateirechte und Gruppenrechte vergibt, sagt Dir auch google, denn da gibt es auch hier viel zu beachten. Man kann hier auch Sonderrechte vergeben. Also, Google ist Dein Freund / Freundin Tja und nun heißt es probieren, studieren und umsetzen. Euer Wellenbrecher |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Crontab - wget | AllOnline | PHP Tipps 2008 | 7 | 29.05.2008 09:19 |
| Crontab Wget - MySQl Dump | AllOnline | PHP Tipps 2008 | 3 | 28.05.2008 15:09 |
| Crontab funktioniert nicht | Plague | Server, Hosting und Workstations | 10 | 01.06.2007 13:50 |
| Select / Option Feld mit CSS nachbauen ? | andrew22 | HTML, Usability und Barrierefreiheit | 2 | 30.11.2006 16:06 |
| glob nachbauen | Zergling-new | PHP Tipps 2006 | 9 | 12.03.2006 23:51 |
| MAILTO in crontab | lamp | Server, Hosting und Workstations | 4 | 13.01.2006 19:31 |
| Leerzeilen in crontab löschen | PHP Tipps 2005-2 | 0 | 08.08.2005 17:34 | |
| Crontab über Console ohne Editor | freq.9 | Server, Hosting und Workstations | 6 | 05.05.2005 13:38 |
| newscript nachbauen | PHP Tipps 2005 | 5 | 19.04.2005 08:47 | |
| faq -system von phpbb nachbauen | elconde | PHP Tipps 2005 | 5 | 11.03.2005 14:22 |
| [Erledigt] Crontab Problem | Server, Hosting und Workstations | 4 | 27.02.2005 21:08 | |
| CronJob testen / mehrere Cronjobs anlegen..?! | Server, Hosting und Workstations | 1 | 22.10.2004 08:45 | |
| Seltsamer Eintrag in die CronTab | MrMarco | Server, Hosting und Workstations | 4 | 12.10.2004 13:12 |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| cronjob jährlich, crontab berechnen, http://www.php.de/software-design/47617-crontab-nachbauen-2.html, crontab wöchentlich, crontab wday, cron nachbauen, crontab mit php nachbauen, crontab dateirechte, cronjob andere datei rechte, cronjob datei rechte, php crontab bauen, cronjob dateirechte, cron jährlich, dateirechte für crontab, crontab mehrere anweisungen, cron && mehrer anweisungen, cronjob geburtstag, inaktive user automatisch anschreiben php ohne cron, php cronjob geburtstag, abbildung cronjob daten in datenbank |