[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