mysql/perl Transaktionen unter Linux

Hi,

ich habe ein Problem mit meiner mysql Datenbank.

Ich habe ein Perl Script als cronjob unter Linux laufen ( alle 5 Min. ). Ich hole mit alle Datensätze aus einer Tabelle und laufe diese nun durch.

Code:
while(row = get_datensatz)
{
}

Mit diesen Datensätzen mache ich nun etwas z.B. den Wert in einer Spalte um einz erhöhen. Vorher mache ich ein 'start transaction' und am Ende ein 'commit' sowie ein 'rollback' bei einem Fehler

Code:
while(row = get_datensatz)
{
      'start_transaction'
      boolean flag = bearbeite_datensatz(row);
      if(flag = true)
         'commit' 
      else
        'rollback'
}

Mein Problem ist, dass die Transaktionen bei mir nicht funktionieren. Unter Windows laufen die Skripte wunderbar. Wieso nicht unter Linux ?

Eine weitere Frage hätte ich noch zu cronjobs : Es ist möglich, dass ein cronjob/script länger läuft als 5 Minuten, z.B. bei vielen Datensätzen. Wird ein weiterer gestartet, wenn ich das gleiche Script noch aktiv ist ?
 
ich kann dir nur einen tip zur zweiten frage geben:

bau dein script so um, daß erst gecheckt wird ob mehr als eine instanz des script läuft (mittels ps aux) und break dann einfach raus. im grunde genommen ein ps aux | grep <name>, und dann breaken wenns 3 sind (oder mehr), denn der grep aufruf ansich wird ja auch gezählt.

anhang:
so könnte das aussehen:
echo $((`ps aux | grep $process | wc -l` -1))
 
Danke für deine Antwort. Wie komm ich aber an den Wert im Perl Skript. Ich hatte diese Idee auch schon, da sie recht elegant und einfach ist. Nur habe ich keine Idee, wie ich halt im Skript an den Wert kommen könnte !

Trotzdem Danke !
 
Original von Dawen
Danke für deine Antwort. Wie komm ich aber an den Wert im Perl Skript. Ich hatte diese Idee auch schon, da sie recht elegant und einfach ist. Nur habe ich keine Idee, wie ich halt im Skript an den Wert kommen könnte !

Trotzdem Danke !

ich kann kein perl, aber system befehle kann der doch bestimmt ausführen, mh? pipe das ganze dann einfach nach /tmp/processcount und lies die datei mit perl befehlen wieder ein.
 
Zurück
Oben