/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Atomare handlinger
Fra : Thomas Lindgaard


Dato : 05-03-04 17:45

Hejsa

Når jeg skal oprette en ny bruger i mit system, så bliver der fyret 5-7
mysql_query()'er afsted. Hvis scriptet fejler et sted midtvejs går det
hele i udu - hvordan sikrer jeg mig at enten bliver alle kald gennemført
med succes, eller også sker der intet?

Det skal køre på en MySQL 3.xx som så vidt jeg ved ikke har
transaktioner indbygget.

Mvh.
/Thomas

 
 
Troels Arvin (05-03-2004)
Kommentar
Fra : Troels Arvin


Dato : 05-03-04 18:46

On Fri, 05 Mar 2004 17:44:34 +0100, Thomas Lindgaard wrote:

> hvordan sikrer jeg mig at enten bliver alle kald gennemført
> med succes, eller også sker der intet?
>
> Det skal køre på en MySQL 3.xx som så vidt jeg ved ikke har
> transaktioner indbygget.

Nyere versioner af MySQL 3 kan godt understøtte transaktioner, hvis
tabeltypen er InnoDB eller BDB. Om din MySQL 3 har understøttelse for
disse typer, må du undersøge.

Hvis du ikke har et databasesystem, så må du selv kode nogle
komplicerede systemer til at holde rede på hvad der er ændret mellem
hvert query og hvordan man omgør dem. Sørg i dette tilfælde for, at
PHP-sidens afvikling ikke bliver dræbt, hvis publikum trykker på deres
browsers stop-knap eller på anden måde afbryder midt i din manuelle
transaktionskode.

Men altså: Jeg vil påstå, at livet er for kort til et DBMS uden
transaktioner, hvis man har brug for transaktioner: Vælg rette værktøj
til opgaven.

--
Greetings from Troels Arvin, Copenhagen, Denmark


Thomas Lindgaard (06-03-2004)
Kommentar
Fra : Thomas Lindgaard


Dato : 06-03-04 10:48

On Fri, 05 Mar 2004 18:45:36 +0100, Troels Arvin wrote:

> Nyere versioner af MySQL 3 kan godt understøtte transaktioner, hvis
> tabeltypen er InnoDB eller BDB. Om din MySQL 3 har understøttelse for
> disse typer, må du undersøge.

Det ser ikke ud til at jeg kan lave andet end ISAM, MyISAM og HEAP.

> Hvis du ikke har et databasesystem, så må du selv kode nogle
> komplicerede systemer til at holde rede på hvad der er ændret mellem
> hvert query og hvordan man omgør dem. Sørg i dette tilfælde for, at
> PHP-sidens afvikling ikke bliver dræbt, hvis publikum trykker på deres
> browsers stop-knap eller på anden måde afbryder midt i din manuelle
> transaktionskode.

Hvordan holder man sin PHP i live hvis brugeren afbryder?

> Men altså: Jeg vil påstå, at livet er for kort til et DBMS uden
> transaktioner, hvis man har brug for transaktioner: Vælg rette værktøj
> til opgaven.

Jups - enig.

Men det er måske også for meget at begynde på at indføre
transaktioner... der er ingen penge involveret i handlingerne og antallet
af brugeroprettelser mv. hvor transaktioner kunne være interessante vil
være meget begrænset (der vil nok maksimalt være i omegnen af 50-100
aktive brugere registreret i systemet ad gangen).

Hvor udsat vil man være for at en "transaktion" bliver afbrudt midtvejs
hvis man bare fyrer et antal kommandoer afsted til databasen - er det
noget som man bør gøre noget ved eller kan man i små systemer være
ligeglad (det er en forholdsvis simpel database og det vil være nemt at
rydde op i den med et lille script).

Mvh.
/Thomas

Troels Arvin (06-03-2004)
Kommentar
Fra : Troels Arvin


Dato : 06-03-04 19:06

On Sat, 06 Mar 2004 10:47:53 +0100, Thomas Lindgaard wrote:

>> Nyere versioner af MySQL 3 kan godt understøtte transaktioner, hvis
>> tabeltypen er InnoDB eller BDB. Om din MySQL 3 har understøttelse for
>> disse typer, må du undersøge.

Hvis jeg var dig, ville jeg presse på for at få en nyere MySQL på
banen, så. Jeg har ikke hørt andet end at det er problemfrit at
opgradere, fx til MySQL 4.x.

> Hvordan holder man sin PHP i live hvis brugeren afbryder?

http://dk.php.net/manual/en/features.connection-handling.php

> Men det er måske også for meget at begynde på at indføre
> transaktioner... der er ingen penge involveret i handlingerne og antallet
> af brugeroprettelser mv. hvor transaktioner kunne være interessante vil
> være meget begrænset

Ligegyldigt, om der er penge involveret eller ej, osv., så handler det
mere om, at adgang til transaktioner kan gøre applikationens kode
betydeligt mere overskuelig.

> Hvor udsat vil man være for at en "transaktion" bliver afbrudt midtvejs
> hvis man bare fyrer et antal kommandoer afsted til databasen - er det
> noget som man bør gøre noget ved eller kan man i små systemer være
> ligeglad (det er en forholdsvis simpel database og det vil være nemt at
> rydde op i den med et lille script).

Det kan kun du vurdere, tror jeg.

--
Greetings from Troels Arvin, Copenhagen, Denmark


Peter Brodersen (06-03-2004)
Kommentar
Fra : Peter Brodersen


Dato : 06-03-04 19:16

On Sat, 06 Mar 2004 10:47:53 +0100, Thomas Lindgaard
<thomas@it-snedkeren.BLACK_HOLE.dk> wrote:

>Hvor udsat vil man være for at en "transaktion" bliver afbrudt midtvejs
>hvis man bare fyrer et antal kommandoer afsted til databasen - er det
>noget som man bør gøre noget ved eller kan man i små systemer være
>ligeglad (det er en forholdsvis simpel database og det vil være nemt at
>rydde op i den med et lille script).

Ikke at det er en erstatning for transaktioner, men som en
kræmmer-nødløsning kan du evt. afslutte dit script med at køre en
simpel update af et felt om at brugeren er blevet færdigoprettet.

Det kan selvfølgelig bare øge kompleksiteten ved fremover at skulle
huske at tjekke på dette konstant (nu hvor der heller ikke er views :)

--
- Peter Brodersen

Ugens sprogtip: også (og ikke osse)

Thomas Lindgaard (07-03-2004)
Kommentar
Fra : Thomas Lindgaard


Dato : 07-03-04 11:36

Hejsa

Jeg tror bare jeg vælger at blæse højt og flot på transaktioner - det
er i hvert fald at skyde over målet at begynde at implementere en hel
masse selv, og som sagt bliver mængden af database-forespørgsler hvor
transaktioner ville være interessant meget lille.

Så jeg krydser bare hvad krydses kan og pløjer videre.

Tak
/Thomas

Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408532
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste