"Simon [2700]" <devnull@linux.org> writes:
[snip]
> #!/usr/bin/perl
> print "Content-type:text/html\n\n";
>
> use CGI;
> $query = new CGI();
> $table = $query->param('id');
>
> use DBI;
> $|= 1;
> $dbh = DBI->connect("DBI:mysql:db:localhost","user","pass");
> $dbh->do("update $table SET hits=hits+1;");
> exit(0);
Hej,
Bare nogle generelle tips:
* Som Peter siger: Er det netop det script du vil optimere? Du siger du
regner med 1-2mill hits/dag paa den, er den counter det eneste din server
laver med den frekvens? (1-2mill = 12-24 hits/sekund).
* Brug mod_perl eller lign. saa dit script ikke skal genindlaeses
fra 'scratch' hele tiden. At kompilere script-sprog for hvert kald
tager tid (mere end selve eksekveringen sandsynligvis) og meget hukommelse.
* Hvis det viser sig at det netop er det script du vil optimere, saa se
paa at lade vaere med at importere pakker:
+ CGI, bruger du kun til at finde en parameter. Hvis du aldrig faar andet
end den ene parameter kan du goere ala:
my $table = substring($ENV{QUERY_STRING}, length("?id"));
(og du kan sikkert selv her se at du kan optimere length(), bare for at
demonstrere princippet - og, at det er noget af et sikkerhedshul direkte
at angive sql-stumper i html'en
.
+ DBI, brug en tekst-fil istedet som Peter skriver.
Og saa lige til sidst: Hvorfor har du et image der returnerer html? Og
du skal nok have noget javascript'random med i stien for at snyde browseren
til at kalde dit script for hver pageload.
Mvh,
--
___
Soren Davidsen / o\
Deliver yesterday, code today, think tomorrow. (_____)
__
http://www.tanesha.net/ _________________________________(___)_______