nordanMedlem sedan juni 2000929 inlägg
Hej!
Jag kör Perl kopplat till en MySQL databas och använder PWS på en Windows 98 maskin. Felet jag har är att det tar ibland tar grym tid att hämta upp sidan som använder MySQL med koppling då i Perl. Man kan få sitta och vänta i typ ½ till 1 minut innan sidan börjar laddas igen. Kör jag PHP på samma sätt så går det utan problem.
Läggar jag sedan ut Perl scriptet på en webbserver som kör Apache webbserver så går det grymt snabbt.
Kan det vara nått som har med Perl att göra?
Vet någon då vad man kan kolla för att öka farten?
JojoxxMedlem sedan juni 20004 306 inlägg
Du har alltså både perl och php installerat på samma maskin, men php-scriptet som gör samma sak går fortare? Har du kanske någon loop som bearbetar svaret från SQL-databasen som är skriven på ett resursslösande sätt? Går det även sakta om du exekverar perl-scriptet direkt på maskinen istället för att köra det via Apache?
nordanMedlem sedan juni 2000929 inlägg
Jag har dock inte gjort hela detta script i php och testat men när jag gör mindre liknade kopplingar så går det fortare med PHP än med Perl?
Det är bara på webben jag kör Apache server hemma så kör jag PWS på Windows 98 och det är också då som det går sakta ?
Här är koden KOD
Om det är något någon tycker att man skulle ha gjort annorlunda tala gärna om det jag vill lära mig :)
JojoxxMedlem sedan juni 20004 306 inlägg
Då är det iofs lite svårt att jämföra när det inte är samma maskin. Det kan vara olika hårdvaru-prestanda. Det är kanske olika versioner av MySQL, olika inställningar i MySQL. Det kan hända att Win32-porten av MySQL är mycket slöare än andra *nix-varianter. Win98 är säkert inte det bästa operativet heller i detta fall. Prova att exekvera scriptet direkt från dos-prompten så ser du i alla fall om det är PWS som slöar ner allt.
Vad det beträffar felmeddelande från mysql står det att läsa i dokumentationen;
my $namn_lista = $dbh->prepare($sqlLista);
if (!$namn_lista) {
die "Error:" . $dbh->errstr . "\n";
}
if (!$namn_lista->execute) {
die "Error:" . $namn_lista->errstr . "\n";
}
... med exempel från din kod. Hoppas det kan vara till lite hjälp.
nordanMedlem sedan juni 2000929 inlägg
hur kör jag det i dos-prompten då? Har glömt hur man gör det
JojoxxMedlem sedan juni 20004 306 inlägg
c:\wwwroot\mysite\cgi-bin\>perl.exe myscript.pl
:) Glöm inte att fylla i de variabler som normalt kommer via CGI::param.
nordanMedlem sedan juni 2000929 inlägg
Hmm det var så jag gjorde och det funka inte kanske är det det som är felen :) ? Jag kanske har konfigurerat perl fel eller nått?
Isåfall vad skall jag göra?
JojoxxMedlem sedan juni 20004 306 inlägg
Som sagt, du får fylla i variablerna som du annars får via CGI::param (formuläret från sidan). Knacka in fasta värden för dem i scriptet, det är enklast för att testa med. Funkar det inte då har du något script-fel, och då är det felsökning som gäller :)
nordanMedlem sedan juni 2000929 inlägg
#/usr/bin/perl
print "Content-type: text/html\n\n";
print "HELLO WORLD";
Funkar fint i en webbläsare men inte i dos-promten
Nått tips om felsökning?
JojoxxMedlem sedan juni 20004 306 inlägg
Fungerar inte det där skulle jag klia mig i huvudet :) Kontrollera så att du har perl i path'en (annars kommer datorn inte att hitta perl.exe). Path'en kollar du på MS-operativ med;
C:\>path
Där skall sökvägen till katalogen där perl.exe (...\perl\bin) finnas med. Annars kan du skriva hela sökvägen till perl när du skall exekvera scriptet;
C:\>program\perl\bin\perl.exe wwwroot\cgi-bin\helloworld.pl
Shebang'en är fel i scriptet, men det bli det säkert bara när du skrev här i forumet. Det är bara Apache som bryr sig om den, spelar ingen roll när du exekverar scriptet från DOS-prompten. Det skall iaf till ett "!";
#!/usr/bin/perl
... fast då den sökvägen som du har till perl.
nordanMedlem sedan juni 2000929 inlägg
hmm Jag hittar inte Perl när jag skriver path kan det vara felet till att det går så långsamt när jag skall hämta data från MySQL?
Känns inte som om det skulle vara det men jag måste ändock fråga eftersom det kan ju vara det :)
Hur lägger jag då till Perl till path?
JojoxxMedlem sedan juni 20004 306 inlägg
I Win98 ändrar du förslagsvis path i c:\autoexec.bat så kommer den att vara med varje gång du startar om datorn. Du har antagligen redan en rad som säger "set path=..." sökvägarna är separerade med semi-kolon. Men detta fixar activeperl (för det är det du kör va?) från installation. Kan tyda på att perl inte är installerat som det ska. Prova att installera om perl och alla moduler.