Avatar billede kimlarsen1978 Nybegynder
30. august 2006 - 09:26 Der er 9 kommentarer og
1 løsning

Automatisk fjernelse af døde links fra DB

Hejsa
Jeg har en tabel med en masse masse links i

id        navn        url
1        Test        http://www.test.dk
2        Test1        http://www.test2.dk

Hvordan laver jeg et script, der automatisk kan slette de links der er døde?
Avatar billede nythjem Nybegynder
30. august 2006 - 09:46 #1
Hej Kim!

Det er for så vidt meget simpelt.

Har du AspHttp installeret på serveren?
http://www.html.dk/scripts/asp/00009/

I så fald looper du bare igennem databasen, laver overstående til en funtion som du så kalder. Jeg kan godt hjælpe med det, men skal bare lige første vide om du har komponenten liggende på serveren.

:)
Avatar billede kimlarsen1978 Nybegynder
30. august 2006 - 11:11 #2
Hejsa
Ja det er på serveren...

:)
Avatar billede nythjem Nybegynder
30. august 2006 - 12:01 #3
Så er det jo ret meget lige til.. Du laver connection til databasen, udskriver de urls der skal kontrolleres i et array og kontrollerer dem. Og du skal nok lige have tilføjet et script timeout :)

<%
For each loop ....

\/ \/ \/ \/ \/ \/ \/ \/

arrURLS = arrURLS & Record("url") & ","

End loop ....


arrURLS = Split(arrURLS,",") - 1

' Array med HTTP header koder
arrHTTPcode = Array("100", "101", "200", "201", "202", "203", "204", "205", "206", "300", "301", "302", "303", "304", "305", "307", "400", "401", "402", "403", "404", "405", "406", "407", "408", "409", "410", "411", "412", "413", "414", "415", "416", "417", "500", "501", "502", "503", "504", "505")
' Array med HTTP header kodernes forklaringer
arrHTTPtext = Array("Continue", "Switching Protocols", "OK", "Created", "Accepted", "Non-Authoritative Information", "No Content", "Reset Content", "Partial Content", "Multiple Choices", "Moved Permanently", "Found", "See Other", "Not Modified", "Use Proxy", "Temporary Redirect", "Bad Request", "Unauthorized", "Payment Required", "Forbidden", "Not Found", "Method Not Allowed", "Not Acceptable", "Proxy Authentication Required", "Request Time-out", "Conflict", "Gone", "Length Required", "Precondition Failed", "Request Entity Too Large", "Request-URI Too Large", "Unsupported Media Type", "Requested range not satisfiable", "Expectation Failed", "Internal Server Error", "Not Implemented", "Bad Gateway", "Service Unavailable", "Gateway Time-out", "HTTP Version not supported")
' Gennemløb Array med URL'er
For intURL = 0 to Ubound(arrURLS)
  Set HttpObj = Server.CreateObject("AspHTTP.Conn")
  HTTPObj.Url = arrURLS(intURL)
  HTTPObj.GetURL

  For intCode = 0 to Ubound(arrHTTPcode)
    If Instr(HttpObj.Response,arrHTTPcode(intCode)) Then
      strResponse = arrHTTPtext(intCode)
      Exit For
    End if
  Next
  Response.Write "<p>" & arrURLS(intURL) & " - " & strResponse & "</p>"
  strResponse = ""
Next
%>
Avatar billede kimlarsen1978 Nybegynder
30. august 2006 - 12:13 #4
Fino, det vil jeg lige se på i aften. Men er det "sundt" at læse over 1000 links ind i et array?
Avatar billede kimlarsen1978 Nybegynder
30. august 2006 - 12:17 #5
Hvilke arrHTTPcode's udover 200 betyder at siden virker?
Avatar billede nythjem Nybegynder
30. august 2006 - 13:03 #6
Selve arrayet gør ikke noget, men serveren kommer til at arbejde en hel del må man sige, det kunne jo være du skulle dele det op over ti udtræk af gangen.. :)

Her er en oversigt over http error codes.. :)
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Avatar billede kimlarsen1978 Nybegynder
30. august 2006 - 21:10 #7
Jeg fik strikket en brugbar løsning sammen.

Tak for 200 points linket :-)
Avatar billede nythjem Nybegynder
30. august 2006 - 21:35 #8
Det er mig der siger tak.

God aften..
Avatar billede nielle Nybegynder
01. september 2006 - 09:39 #9
Jeg ville nok ikke slette "døde links" med det samme, men blot sætte dem på en slags observationsliste til at starte med. På den måde kunne du undgå at komme til at slette et link som er nede fordi servern f.eks. lige har et uheld.
Avatar billede kimlarsen1978 Nybegynder
01. september 2006 - 15:16 #10
Hejsa
Jeg har tilføjet HTTPkoden i en kolonne også udskriver jeg kun dem med kode 200. Så opdateres listen næste gang jeg kører funktionen...
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