Avatar billede perh Juniormester
14. oktober 2003 - 16:37 Der er 6 kommentarer og
1 løsning

løbenummer i PERL-script

Jeg har et PERL-script, hvori jeg skal bruge et fortløbende nummer f. eks. fakturanummer.
Jeg forestiller mig, at det sidst anvendte nummer gemmes i en fil på serveren og kaldes frem ved næste forespørgsel, øges med 1, anvendes og lægges tilbage i nummerfilen.
MEN: hvordan er det lige jeg laver sådan en rutine?
Avatar billede mfalck Praktikant
14. oktober 2003 - 16:39 #1
det allernemmeste er at lave det i en database, eftersom du kan få problemer med samtidige forespørgsler.
Avatar billede perh Juniormester
14. oktober 2003 - 16:45 #2
Jeg glemte at skrive, at det bruges på en website.
Kan jeg ikke gøre det som skitseret med flock?
Avatar billede mfalck Praktikant
14. oktober 2003 - 16:48 #3
jo - udover at flock er blokerende IO, så hvis du får mange requests så kan det være en alvorlig flaskehals.
Avatar billede mfalck Praktikant
14. oktober 2003 - 16:57 #4
#!/usr/bin/perl

use FileHandle;
use strict;
use Fcntl ':flock';
my $count;

my $fh = new FileHandle "< counter.txt";

        while (<$fh>) {
                chomp;
                $count = $_;
        }

print "count = $count\n";
        $count ++;
        my $gh = new FileHandle "> counter.new";
        flock($gh,LOCK_EX);
        print $gh $count;
        flock ($gh,LOCK_UN);
        system ("mv counter.new counter.txt");
Avatar billede mfalck Praktikant
14. oktober 2003 - 16:58 #5
detteher gør nogenlunde hvad du vil ... der er det store hul at den kopierer over fra den ene fil til den anden - og i det korte øjeblik er der een som kan gå ind og opdatere samtidigt og derved får du to af det samme nr.
Avatar billede perh Juniormester
14. oktober 2003 - 17:16 #6
Jeg har lige lagt det op på serveren og det kører fint, det tæller!
Jeg tror, jeg løber risikoen for simultane klik foreløbig. Det skulle være mærkeligt om de 6 brugere skulle ramme samme splitsekund.

Jeg takker og gir point, hvis du vil sende et svar.
Avatar billede mfalck Praktikant
14. oktober 2003 - 18:06 #7
ok :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester