Sich selbstwartende Skripte .. Gedanken dazu?

Begonnen von k00ni, 28. Juli 2007, 15:47:00

Vorheriges Thema - Nächstes Thema

k00ni

Hallo,
ich habe mir schon seit längerem Gedanken zu sich selbstwartenden Skripten gemacht. Bei uns ist es so, dass wir viel mit der Datenbank arbeiten und es Fälle in der Praxis entstehen können, die die Datenbestände ungültig machen könnten oder auch aufblähen.
Hier geht es mir eigentlich nicht darum, dass sich ein PHP-Skript selbst wartet, sondern darum, wie man in Skript so organisiert, dass es seine Datenbestände prüft und zur Not ändert (bearbeitet, löscht, etwas hinzufügt etc.) Sollte man sowas eher in der Datei ablegen, weche mit einem \"Bereich\" zu tun hat (bspw. Verwaltung von etwas) oder eher zentral, wo gleich mehrere Bereiche abgearbeitet werden.
Weiterhin stellt sicht die Frage, ob man Wartungsabfragen und -funktionen auch gleich bei der direkten Arbeit mit den Datenbeständen abwickeln sollte. Also wenn ich beispielsweise eine Freundschaftverbindung zwischen 2 Usern anlege, dass dann das Skript auch prüft, ob es eine gibt, ob es mehrere gibt und diese Notfalls löscht, sowas halt. Gefahr laufe ich selbst immer, auch Fälle abdecken zu wollen, die es eigentlich nie geben kann.
Ideen und Gedanken dazu?
 
Grüße

Powie

Ich gebe mal ein Beispiel, wie man das bei DB2 machen könnte. MySQL ist mit den aktuellen Versionen leider noch nicht so weit.
Beispiel: User -> Buddyliste
Bei DB2 werden die beiden Tabellen über Fremschlüssselbedingungen verknüpft und man kann die Methode festlegen was bei bestimmten Fällen passiert.
Unter normalen Umständen, bleiben die Datensätze der Buddyliste stehen, wenn man den Userdatensatz  löscht. Bei DB2 lege ich Aktionen fest für
OnDelete
OnUpdate
OnDelete -> Löscht man den User, kann man die Buddy Datensätze automatisch löschen lassen.
OnUpdate -> Würde sich dieUserID ändern, würde sich auch die Userid in den Buddy Datensätzen automatisch updaten.
Ich sehe sowas eigentlich auf datenbankebene, bei mysql muss man es hald händisch lösen.

k00ni

Hmm, dass ist auch eine Möglichkeit: Man packt vieles einfach in die Datenbank und aus dem PHP-Skript raus.
Was ich aber auch meinte sind so Dinge, wie ungültige Datensätze löschen (abgelaufene Kommentare) oder beispielsweise die Sortierung der Bilder bei pImage. Das ist nicht direkt Datenbanktechnisch, sondern muss per PHP-Skript gelöst werden. Mir ging es hierrum und ob man dass eher zentral abwickelt oder immer an der jeweiligen Stelle, wo man die Funktion gerade benötigt.
 
Grüße

mahe

Ich denke das hängt von der Situation ab.
Bei Wartungsaufgaben (abgelaufene Posts, Useraccounts, ...) sollte ein CronJob der einmal pro Tag oder Woche rennt reichen.
Wenn du Daten (zB Größe, Datum, ...) zu einem Download ergänzen willst, weil diese noch nicht in der DB stehn, würde ich das beim ersten Aufruf machen und ev. wenns sehr viele Daten sind auch 1mal am Tag per Cron.

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...


k00ni

Ist das Cron einfach einzubinden bzw. überhaupt zu erstellen?
 
Grüße

Powie

In Confixx ist es mittlerweile easy, da kann man dann ein PHP Shell Script als Cron laufen lassen. Ansonsten geht es nur wenn man Shell Zugriff hat und die Rechte dazu oder gar einen Root Server besitzt.
Für die Mehrheit an Usern die ihren Webspace auf Shared Hosting Systemen liegen haben wird es in der Regel nicht nutzbar sein.
Wenn ich selber so etwas benötige, wie zum Beispiel beim pCheck, das alle 10 Minuten läuft, mache ich das über einen cron Job und ein php Shell Script. das ist obergenial!

k00ni

Hallo,
bei Drupal gab es die Möglichkeit verschiedene Dinge als Chronjob einbinden zu können... ging das dann über einen anderen User oder über den eigenen?
Wenn dies nicht überall zur Verfügung steht, dann wäre das für uns nicht direkt interessant, wenn dann nur bei einzelnen Projekten.
Wenn du Daten (zB Größe, Datum, ...) zu einem Download ergänzen willst, weil diese noch nicht in der DB stehn, würde ich das beim ersten Aufruf machen und ev. wenns sehr viele Daten sind auch 1mal am Tag per Cron.[/quote]
Also immer dann, wenn man es auch wirklich braucht. Dies favourisiere ich auch.
 
Grüße

all your base are belong to us / Discord