En liten fråga.. Jag har en databas innehållande länkar till en massa filer, för att hålla denna databasen aktuell så ska jag köra igång ett script som ligger och kör varje natt för att kolla upp om filerna finns..
Jag har gjort en variant med pfsockopen och fputs för att få tillbaka filhuvudet innehållande raden HTTP/1.0 200 Ok.. Men detta har visat sig ta en himla tid för varje fil och med tanke på det stora antalet filer jag har så behöver jag dra ner denna tiden avsevärt.
Så nu undrar jag allra ödmjukast om det finns någon här som kan ge mig ett tips på hur mitt script ska kolla filerna i databasen finns eller ej på ett snabbt (snabbare) sätt.. Finns det ett snabbare sätt att få tag på Headern till filen!?
Om du i stället för GET använder HEAD, så skickas endast HTTP-huvudet (där statusmeddelandet ingår), inte hela dokumentet (vilket sker vid GET). Borde snabba upp en del.
Kan man på något enklare sätt finna huvudet i filen genom att skicka in hela URLen (dvs. http://f-1.sovintel.ru/00/nurburg/nurb_1.rar) så att man slipper dela upp länken i en $host och en $fil!?
Mycket märkligt, det verkar som om man får 404 på alla GET-anrop förutom roten.. Men det funkar i webbläsaren.. Skumt på min ära :) Kan det ha att göra med att dom kör virtuella servrar eller något sånt?
Hur är det nu, de icke virtuella hanterar Host även de!? *smått trött och förvirrad*
Får ibland följande fel Warning: Unable to find file identifier 1 in när jag kör scriptet (Typ var 6:e gång) .. Vad kan vara fel då, eller är det deras server som bråkar med mig!?
Hur menar du? Host sätts alltid av webbläsaren vid GET-anrop. När man kör virtuella servrar så använder servern Host-variabeln för att avgöra vilken virtuell servern som det handlar om.
Om man anropar en "riktig" server (dvs inte virtuell) så behöver man inte sätta Host antar jag, men det skadar ju inte :)
Felet som du får kan nog bero på att uppkopplingen misslyckads av någon anledning och då får du ingen filidentifierare tilldelad.
------------------ per@svanstrom.nu www.svanstrom.nu
Humm.. Jag får den att bli 200 när jag kör enbart den filen, men när jag kör min loop genom filerna så blir det fel..
Då får jag bara 200 på den 4:e posten..
Tänkte bara meddela att jag löst detta..
Felet var att uppkopplingen mot hosten aldrig avslutades riktigt.. När jag väl löst detta så visade det sig att fsockopen endast hanterar 6 olika filpekare på rad så jag fick göra en rejäl ändring i scriptet..
Nu är det bara att köra crontab på scriptet och låta det göra sitt jobb! :)