Avatar billede mille Nybegynder
16. november 2004 - 12:18 Der er 6 kommentarer

Hjælp fra Php til ASP

Jeg har følgende kode til noget ip2country, men jeg skal bruge det som ASP

Er der et klogt hoved der kan oversætte koden til ASP ??


{
    $zz=explode('.', $ip);
    $offset=( ($zz[0]<<16)+($zz[1]<<8)+$zz[2] )*2;
    $fp = fopen("./db.db", 'r');
    fseek( $fp, $offset, SEEK_SET );
    $code = fread( $fp, 2 );
    fclose( $fp );

    if ($code == "\0\0") { $code = "XX"; }
   
    return $code;
}

/Mille
Avatar billede yellow Nybegynder
16. november 2004 - 14:13 #1
Overhovedet ikke testet, men det vil nok se nogenlunde sådan her ud:
function ip2country( ip )
  on error resume next
  zz = Split(ip,".")
  offset=((zz(0)*2^16)+(zz(1)*2^8)+zz(2))*2
  Set objFSO = Server.CreateObject("Scripting.FileSystemObject")   
  Set objTextStream = objFSO.OpenTextFile(Server.MapPath("./db.db"), 1)
  strBuffer = objTextStream.Read(offset - 1)
  result = objTextStream.Read(2)
  objTextStream.Close
  set objTextStream = nothing
  set objFSO = nothing
  if result = vbNull & vbNull then result = "XX" end if
  ip2country = result
end function

Response.Write ip2country("127.0.0.1")
Avatar billede mille Nybegynder
16. november 2004 - 16:10 #2
Næsten rigtigt..

strBuffer = objTextStream.Read(offset - 1)
skulle være

strBuffer = objTextStream.Read(offset)

Den er bare meget langsommere end Php, kan man gøre noget ved det FSO object, så det kører hurtigere ???
Avatar billede yellow Nybegynder
17. november 2004 - 09:21 #3
Hmm,

Måske
objTextStream.Skip(offset)
I stedet for
objTextStream.Read(offset - 1)
Avatar billede yellow Nybegynder
17. november 2004 - 09:23 #4
Err...mente
objTextStream.Skip(offset)
I stedet for hele linien
strBuffer = objTextStream.Read(offset)
Avatar billede mille Nybegynder
17. november 2004 - 14:45 #5
Den bliver stadig for sløv, når den skal læse en fil i gennem på 30 mb. (2-4 sec.)

Har du andre foreslag ??
Avatar billede yellow Nybegynder
17. november 2004 - 16:11 #6
Hmm nix :-(

Tror ikke du får presset mere ud af filesystemobject. Den performer hurtigst med byte read/skip...og det gør ovenstående funktion allerede.

Kender ikke lige andre alternativer til filesystemobject...
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