[Typo3-german] PHP-Applikation in Typo3-Extension konvertieren
Sabine
typo3dev at sric.de
Wed Nov 2 18:05:42 CET 2005
Chi Hoang schrieb:
>Sabine schrieb:
>
>
>>>Kann es sein das der Primärschlüssel uid von allen typo3 tabellen auf
>>>autoincrement steht?
>>>
>>>
>>Ja. Das Autoincrement ist ja MySQL-spezifisch. Die Sequenztabellen von
>>PEAR-DB machen das ganze Backend-unabhängiger.
>>Aber wenn es in Typo3 läuft, ist es um die Backend-Unabhängigkeit
>>vorläufig ja ohnehin geschehen. Da eine Portierung auf ein anderes
>>Backend bei meiner App auch in absehbarer Zeit nicht geplant ist, soll
>>mir das egal sein.
>>
>>
>
>????
>
>
Typo3 basiert auf einer älteren MySQL-Version, in der es noch keine
Subselects und Unions gab (ich nehme an 3.23..x). Andere Backends wie
Oracle o.ä. können zur Zeit nicht verwendet werden. Es gibt aber ein
Projekt, dies über Database-Abstraction-Layer zu ändern. Siehe:
http://typo3.org/development/projects/database-abstraction/
Autoincrement ist ein Feldtyp, den es in anderen DBMS nicht gibt.
Deswegen gibt es in PEAR-DB einen Mechanismus, selbst Primärschlüssel zu
erzeugen.
Es werden einfach für jede Tabelle, für die die Methode nextId benutzt
wird, Sequenztabellen erzeugt. Die enthalten nur einen Datensatz mit 1
Feld, das den letzten gültigen Primärschlüssel der zugehörigen Tabelle
enthält. Die Methode nextId liefert dann den nächsten Primärschlüssel
zurück und setzt ihn in der Sequenztabelle auch sofort hoch. Wenn die
Sequenztabelle noch nicht existiert, wird sie angelegt. Dieser
Mechanismus verhindert, dass es bei konkurrierenden Inserts knallt, wie
das ja bei select max(id) from table und anschließendem Insert passieren
kann.
Als ProgrammiererIn mußt du also nur eine Tabelle mit einem
Primärschlüssel anlegen und dir dann vor einem Insert mit nextId den
Primärschlüsselwert holen.
So weit ich weiß, funktioniert das nur für Ganzzahlwerte, läßt sich aber
leicht überschreiben.
So was läßt sich natürlich auch selbst implementieren.
Ist auch nicht von den PEAR-Entwicklern erfunden, sondern eine schon
lange übliche, aber eben wirklich saubere Methode.
Im PEAR-DB-Paket gibt es noch einen Haufen wunderbarer Methoden, die
jede Menge eigenes Coding ersparen.
>
>
>>>Nein, die Tabellen sollten in Typo3 definiert werden, und dann
>>>erübrigen sich die db konfig-daten
>>>
>>>
>>>
>>Habe mir mal die Grundstruktur der T3-Tabellen angeschaut. Da wird mir
>>ja ganz anders. Werde noch mal eine gesonderte Frage dazu stellen.
>>
>>
>
>:)
>
>
Nach weiterer Lektüre im Typo3-Buch ist mir manches dazu schon etwas
klarer, manches noch unklarer. Ich werde jetzt erst noch mal ein bißchen
selber testen, sobald ich dazu komme. Bevor ich allzu doofe Fragen
stelle ;-)
>
>
>>>- Muß / sollte der Loggingmechanismus durch einenTypo3 eigenen
>>>
>>>
>>>
>>>>Mechanismus ersetzt werden? ( Irgendwo hab ich das Stichwort jumpURL
>>>>gelesen. Ersetzt das die Funktion header('Location: ./xyz.php')? )
>>>>
>>>>
>>>Brauchst Du gar nicht. Nimm die standart T3 Login-Box.
>>>
>>>
>>>
>>>
>>Oh, ich meinte nicht den Login-Mechanismus, sondern das Logging,
>>Fehlerbehandlung.
>>Wenn ein gravierender Fehler auftritt (Datenbank ist down, irgendjemand
>>hat eine Tabelle gelöscht, der Pfad, in den Dateien rausgeschrieben
>>werden, ist nicht verfügbar, der SMTP-Server antwortet nicht, also
>>alles, was Kommunikation mit externen Systemen ist), logge ich die PHP-
>>oder PEAR-Fehlermeldungen in eine Datei, räume ggfs. Tabellen auf,
>>sofern es noch geht, und leite den Nutzer auf eine Fehlerseite weiter.
>>
>>
>>
>
>ist mir zu kompliziert. es gibt da aber wohl so typo3 log funktionen.
>
>
Dann schau ich mal in diese Richtung. Eins der Probleme ist, dass ich in
meinem PHP-Code "Transaktionen" nachgebildet habe, da mir keine
transaktionssicheren Tabellen (InnoDB) zur Verfügung standen. Wenn da
mittenmang was schief geht und ich es nicht auffangen kann, sieht es
wirklich übel aus.
Schönen Abend
Sabine
>_______________________________________________
>Typo3-german mailing list
>Typo3-german at lists.netfielders.de
>http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-german
>
>
>
>
More information about the TYPO3-german
mailing list