Undo array größe

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Undo array größe

    Moin Forum, ^^


    ich mal wieder.
    Mal eine etwas allgemeinere Frage, möchte heut mal kein Code 8)

    Ich möchte für eine Verwaltungsebene mit Datenbank zugriff eine luxus möglichkeit für (sau)dumme Anwender schreiben. Das ganze soll folgendermaßen aussehen:

    Mitarbeiter haben die Möglichkeit, daten von Kunden, Mitarbeitern, Tieren, what ever, zu ändern, löschen, hinzuzufügen etc.
    Ich hänge nun also ne kleine Seite ran namens undo.php.

    Also angenommen ein dummer Mitarbeiter tut zufälligerweise den Falschen Kunden löschen, dann soll er, zumindest solange bis er eine andere aktion ausführt (einen adneren Kunden löscht), die Möglichkeit haben den Kunden wieder zur DB hinzuzufügen.
    D.h er Löscht, sieht nach dem Löschvorgang seinen Checkscreen mit der Zusammenfassung was er gelöscht hat und merkt: "Scheisse ich depp, hab den Falschen Kunden/Hund/Pferd ausgewählt".
    Dann klickt er in der navi auf "undo" und bekommt die Möglichkeit die letzte aktion Rückgängig zu machen.

    Also will ich auf der löschen.php (bevor die Daten gelöscht werden), alle Daten die gelöscht werden sollen abfragen und in variable speichern. Das ist kein Thema.

    Meine Frage nun.
    EIn Hund/Affe/Kunde steht in der Tabelle Tiere/Kunden. Zusätzlich bekommt jedes Pferd eine eigene Tabelle angelegt, deren namen sich aus der Pferdenummer zusammensetzt (bsp 123456756_pferd).
    In diese Tabelle werden täglich neue Tupel reingeschrieben. Und zwar 4*24 am Tag. In jedem Tupel befinden sich glaub 10 werte.
    Naja worauf ich hinaus will, so eine spezifische Kundentabelle umfasst mir jetzt (nach 15 Tagen) 1464 Datensätze und ist 190,5 KB groß.
    Also nach einem monat ist so eine Tabelle 381 KB groß. Nach einem Jahr dann ~ 4572 KB. Sind dann also ~4,46 MB.

    Jeder datensatz der Älter als 1 Jahr ist wird gelöscht..

    Meine Frage nun... Kann ich so eine Kundentabelle komplett in ein Array schreiben und dann der Session übergeben? Oder sind knapp 4,5 MB zuviel für so ein Array oder die Session?.

    Oder gibts nen schickeren weg (den gibts bestimmt ^^). Z.b durch ne exportfunktion und ner import oder so. Was meint ihr?

    Also ich fand mein ansatz die gelöschten Daten der Session zu übergeben und diese dann mit der undo.php wieder einzufügen ganz gut. Bis ich die größe der Tabelle gesehen habe... :- /

    Grüße
    ----[Blockierte Grafik: http://www.smilie-harvester.de/smilies/Alltag/putzen.gif] Nein ich bin nicht die Signatur, ich Putz hier nur ---
  • So "große" Datenmengen in ein Array zu packen, ist meiner Meinung nach etwas ineffektiv. Habe mehrere Vorschläge:

    1. Der einfachste Weg: Doppelte Überprüfung
      Beim Löschvorgang werden dem Benutzer genau alle Daten aufgelistet, die er löschen möchte und danach wird mit einer Überprüfung ala "Sind Sie sich sicher..." nochmals eine Prüfung durch den Benutzer "erzwungen".

    2. Out-Of-Order
      Belasse die Kundentabelle doch einfach für beispielsweise 24 Stunden in der Datenbank. Zusätzlich implementierst du dir eine Funktionalität, die auf einen Datenspeicher (Dateisystem, Datenbank, etc.) zugreift, in dem gelöschte Individuen mit diesen Tabellen assoziert werden. Erfolgt innerhalb der konfigurierten Zeit keine Aktion, wird der entsprechende Datensatz aus dem Datenspeicher und die verknüpfte Kundentabelle aus der Datenbank entfernt.

    3. Export / Import
      Gleiches Prinzip wie Out-Of-Order, mit dem Unterschied das die Kundendaten samt Kundentabelle im Dateisystem für eine Zeit x gespeichert und bei Bedarf wieder importiert werden.
    MfG dynambee
  • Hi dynambee,

    die doppelte Überprüfung hab ich teils schon implementiert, also nach einem druck auf "löschen" Popt ein alert mit "Bitte überprüfen sie bla, sind sie sicher [ } ja [ ] nein" auf... Dennoch kann da was schiefgehn, kennst ja sicher die Anwender...

    Das "Out-Of-Order" Prinzip find ich persönlich ganz gut.

    Also ich hab das so aufgefasst. Ich erstelle eine neue Tabelle namens "gelöscht". In die tabelle wird nach einem Löschvorgang bsp die ID oder die Kundennummer sowie ein Timestamp gespeichert. Dann implementier ich eine Seite namens "undo". Auf dieser wird in einer dropdownliste jeder Kunde angezeigt, der in der tabelle "gelöscht" gespeichert ist. Auf der Seite habe ich die Möglichkeit, als "löschen" selektierte Kunden wieder aus der "gelöscht" Tabelle zu entfernen. zusätzlich wird in der Tabelle "Kunden" das attribut "gelöscht?" auf 1 gesetzt, damit die "gelöschten" Kunden im restlichen system nichtmehr angezeigt werden.

    Dann schreibe ich ein Script, dass alle Kunden deren Timestamp bsp. älter als 24 std ist aus der DB entfernt.

    Nur wie soll das script aufgerufen werden? Bei jedem Seitenaufruf ist das zu heikel, da das Managementsystem nicht jeden Tag benutzt werden könnte.



    danke schonma

    grüße
    Timo
    ----[Blockierte Grafik: http://www.smilie-harvester.de/smilies/Alltag/putzen.gif] Nein ich bin nicht die Signatur, ich Putz hier nur ---
  • Oh ich habe heute zufällig auch einen Cronjob eingerichtet, deshalb kann ich meine Google Kenntnisse gleich weitergeben:

    Schritt 1:
    SSH Client runterladen z.B. Putty

    2) Shell Zugangsdaten vom Server rausfinden

    3) Im SSH Client einloggen

    4) crontab -e in die Konsole eingeben

    5) Einmal Einfügen, oder Insert auf der Tastatur drücken
    dann tippen:
    * * * * * wget seite.com/cron.php > /dev/null/
    wobei die einzelnen * für Minuten 0-59 | Stunden 0-23 | Monatstage 0-30 | Monat 0-12 | Wochentag 0-7 stehen und * immer bedeutet

    Bsp: Jeden Tag um 18:22 Uhr:
    22 18 * * * wget....

    6) Abschließend noch ESC drücken und :wq! eintippen

    so hats bei mir geklappt! Viel Erfolg
  • Zwar bisschen spät, aber warum nicht ^^

    Ich würde an deiner stelle einen backup-ordner für deine mitarbeiter außerhalb des apach/htdocs ordners erstellen (oder zumindest mit htaccess sichern) und da pro mitarbeiter eine sql-datei erstellen, in die per mysql export immer die daten der letzten löscung eingetragen werden. Also wenn er nen pferd löscht die komplette tabelle mit INTO OUTFILE in der datei sichern und bei bedarf abrufen.
  • Hallo,

    ich würde das nicht mit PHP oder Skripte machen, ich würde das der Datenbank überlassen (Transaktionen) somit bleiben die Daten auch weiterhin sicher (Redundant).
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.