Avatar billede bgo Nybegynder
03. maj 2005 - 13:57 Der er 8 kommentarer og
1 løsning

hjælp til fejlbehandling

Jeg tilgår en url med

$file = "url";
$contents = file($file);

Det er så fint nok, blot hvis der opstår en fejl, såsom en 500 Internal server error, så får jeg jo blot en Warning: file(url): failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error bla bla

Det betyder at jeg på nuværende ikke får et helt korrekt resultat ud af mit script.

Jeg har prøvet at lede efter en løsning både her på eksperten og i de bøger jeg har hjemme nu, men desværre uden held - så nu dette spørgsmål:

Kan jeg på en eller anden måde "trappe" sådanne fejl så jeg kan lade mit script handle ud fra dem? Meget gerne således at jeg kan checke HTTP respons nummeret.

PS: jeg er meget ny mht php
Avatar billede jakobdo Ekspert
03. maj 2005 - 14:20 #1
Altså du kunne @file
Så vil du "bare" kunne se fejlen i $contents.
Avatar billede bgo Nybegynder
03. maj 2005 - 15:30 #2
du mener

$contents = file(@file);

?
Avatar billede jakobdo Ekspert
03. maj 2005 - 21:53 #3
Jeg mener:

$file = "url";
$contents = @file($file);

Et @ foran en funktion, "undertrykker" fejl-rapporteringen!
Avatar billede bgo Nybegynder
04. maj 2005 - 04:39 #4
Ok, det prøvede jeg så også (samt et par andre mere eller mindre uheldige kombinationer :D) men $contents forblev tom, i al fald de 4 første linier jeg tester på (dem der indeholder/kan indeholde det jeg skal bruge til scriptet). Fejl-rapporteringen blev ganske vist undertrykt ;) men tilsyneladende lidt for meget (jeg har i php.ini error_reporting  =  E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR og display_errors = Off - kan det have indflydelse? (valgt da jeg blev træt af alt for mange meldinger på mine sider da jeg færst startede med php for ikke så længe siden))
Avatar billede jakobdo Ekspert
05. maj 2005 - 22:33 #5
Selve konfig af PHP er jeg ikke haj i, men denne: display_errors = Off
kunne vel tyde på den ikke viser så mange fejl.

Hvad med evt at teste om filen er der, inden du læser den?

F.eks. noget i stil med:

http://www.damgaard-olsen.dk/exp/614834.phps

Se hvordan den virker på siden:

http://www.damgaard-olsen.dk/exp/614834.php
Avatar billede bgo Nybegynder
05. maj 2005 - 23:20 #6
Det fungerer fint nok - men hvis det så er en side med serverfejl ala

http://www.esea.dk/serverfejl.asp

så skulle mit script meget gerne gøre noget andet end hvis siden er ok eller hvis siden ikke findes. Som mit script er nu defaulter den til at rapportere at siden ikke er tilgængelig, dvs. det er det samme uanset om den pågældende server er nede, om siden rapportere 4xx eller 5xx. Jeg ville gerne have scriptet til at kunne rapportere noget ala "serveren er oppe, men der er fejl på siden" (svarende til 5xx fejlmeldinger).

Den ene af de bøger jeg har hjemme, forklarer kun hvad fejltyperne står for (overordnet på 2xx, 3xx, 4xx og 5xx) men desværre ikke hvordan man kan "se" forskel i ens php-scripts :(
Avatar billede jakobdo Ekspert
05. maj 2005 - 23:25 #7
Hvis du vil melde fejlen, kan du evt bruge noget regexp til at finde fejl koden.
Er det evt sådan noget du ønsker?
Om php har en funktion som kan dette, ved jeg desværre ikke!
Må jeg spørge hvad du helt præcist skal bruge et sådan script til?
Avatar billede bgo Nybegynder
06. maj 2005 - 00:55 #8
hmm. det er måske sådan noget jeg ønsker :) Er ikke helt med nemlig ;)

Scriptet er til at teste om nogle servere er online, nede for vedligeholdelse eller utilgængelige for de der skal have adgang til dem. Dermed kan jeg måske mindske "congestion" når de er på vej op igen efter en nede periode, da alle nærmest desperat forsøger at få adgang til dem når de er nede og når de er på vej op igen - hvilket resulterer i at det tager meget længere tid før folk kan komme igennem til dem. Samtidig kan folk via mit script se at det ikke er deres computer eller deres version af softwaren der er noget galt med når de ikke kan få forbindelse fordi serverne er nede.

Jeg arbejder så på at forbedre scriptet på flere områder, bl.a. dette, således at rapportering og evt. fejlfinding kan forbedres (somme tider ser tingene ud til at være korrekte indefra, men ikke udefra). Forleden oplevede vi så at en server blev rapporteret som kørende indefra, men ingen kunne få fat i serveren - så vi troede at serveren var nede. Mit script rapporterede naturligvis at serveren var utilgængelig, hvilket normalt betyder at serveren er ude af drift eller der er fejl på forbindelsen. Det var først da jeg checkede manuelt at jeg fandt u af at ingen af delene gjorde sig gældende (det var så 5xx fejlen der dukkede op - en fejlkonfiguration der havde indsneget sig efter en opdatering).
Avatar billede bgo Nybegynder
28. oktober 2005 - 16:24 #9
lukker
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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