[php] controleren op broken links

Pagina: 1
Acties:
  • 170 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • Brabrabra
  • Registratie: Januari 2002
  • Laatst online: 12:16

Brabrabra

Chaoss ahv

Topicstarter
Is er ook een gemakkelijke manier om te controleren op broken links in php? Het gaat hier om REMOTE files, links naar sites die in mn database staan.

Ik heb nu dit:
code:
1
2
3
4
5
6
$file = fopen ("http://www.ietswatnietbestaat.com/", "r");
if (!$file)
  {
  echo "<p>Unable to open remote file.\n";
  exit;
  }

Maar die geeft naast die zin "Unable to open remote file." ook nog 2 warnings, die ik niet wil zien in dit geval. Ik kan misschien het warninglevel ofzo lager zetten, maar ik wil in andere gevallen WEL warnings zien, dus dat lijkt me geen goed idee.

Bovendien lijkt het me niet een efficiente oplossing, gewoon erg traag :Z als php de sites helemaal moet openen.

Iemand een oplossing?

Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!


Acties:
  • 0 Henk 'm!

  • flat
  • Registratie: Mei 2000
  • Niet online
@

"Happiness is a way of travel, not a destination."
--Roy Goodman


Acties:
  • 0 Henk 'm!

  • GGS_206
  • Registratie: Juli 2001
  • Niet online

GGS_206

Oranje!

Op maandag 06 mei 2002 11:19 schreef Flat© het volgende:
@
Als je niet wat nuttigs te melden hebt kan je beter niets in dit topic zeggen. De topicstarter probeert een eerlijk antwoord te vinden, en niet zoiets wat jij zegt.

T.net ID. Bekijk het maar es eem..
‹(◕‿◕)›


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Op maandag 06 mei 2002 11:20 schreef GGS_VR6 het volgende:

[..]

Als je niet wat nuttigs te melden hebt kan je beter niets in dit topic zeggen. De topicstarter probeert een eerlijk antwoord te vinden, en niet zoiets wat jij zegt.
Ik denk dat zijn reactie een stuk nuttiger is dan die van jou.. @ is namelijk DE oplossing.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • flat
  • Registratie: Mei 2000
  • Niet online
Op maandag 06 mei 2002 11:20 schreef GGS_VR6 het volgende:

[..]

Als je niet wat nuttigs te melden hebt kan je beter niets in dit topic zeggen. De topicstarter probeert een eerlijk antwoord te vinden, en niet zoiets wat jij zegt.
woei, ochtendhumeurtje?


van de usernotes op http://www.php.net/manual/en/function.fopen.php (wat me een logische plaats lijkt om naar info te zoeken als je daarmee bezig bent:
Note: The "@" in front of fopen suppresses the error output of
the function.

"Happiness is a way of travel, not a destination."
--Roy Goodman


Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 13:15
GGS_VR6:
Als je niet wat nuttigs te melden hebt kan je beter niets in dit topic zeggen. De topicstarter probeert een eerlijk antwoord te vinden, en niet zoiets wat jij zegt.
Als je nooit in P&W komt hoef je denk ik niet te bemoeien met posts van users (zoals Flat) die hier wel regelmatig komen.

Dat jij het @ commando niet kent is niet ons probleem :Z

Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 09:35

me1299

$ondertitel

Op maandag 06 mei 2002 11:20 schreef GGS_VR6 het volgende:

[..]

Als je niet wat nuttigs te melden hebt kan je beter niets in dit topic zeggen. De topicstarter probeert een eerlijk antwoord te vinden, en niet zoiets wat jij zegt.
Toch lijkt mij de optie @ erg toepasselijk. Dat zou namelijk best wel eens tot de oplossing kunnen lijden.

Met @ kan je errormeldingen supressen.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 09:38

Super_ik

haklust!

Op maandag 06 mei 2002 11:23 schreef Flat© het volgende:

http://www.php.net/manual/en/function.fopen.php
deze zeker:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
jamie.watt@murchison.com.au
02-Feb-2000 07:39 
 
To check if a file exists using http or ftp use the following:

$fp = @fopen("http://www.someurl.com/testfile.php3","r");
if ($fp)
{ print"The file exists!"; }
else
{ print"The file does not exist"; }

Note: The "@" in front of fopen suppresses the error output of
the function.

I hope this clears up some confusion

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


Acties:
  • 0 Henk 'm!

  • Brabrabra
  • Registratie: Januari 2002
  • Laatst online: 12:16

Brabrabra

Chaoss ahv

Topicstarter
Op maandag 06 mei 2002 11:23 schreef Flat© het volgende:
Note: The "@" in front of fopen suppresses the error output of the function.
Hmmm, sorry dat ik dat zelf niet gezien had |:( Noujah, iig bedankt :)

Er is dus geen efficientere manier om op broken links te controleren :?

Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!


Acties:
  • 0 Henk 'm!

  • flat
  • Registratie: Mei 2000
  • Niet online
hier dus nog ff de officiele pagina uti de php manual:
http://www.php.net/manual/en/language.operators.errorcontrol.php
staat nog wat extra uitleg bij enzo

"Happiness is a way of travel, not a destination."
--Roy Goodman


Acties:
  • 0 Henk 'm!

  • dreambofh
  • Registratie: November 2000
  • Laatst online: 17-05-2020
Heb ut effe opgezocht.
Was ook naar iets op zoek.
Dit werkt best wel...
code:
1
2
3
4
5
$fp = @fopen("http://www.someurl.com/testfile.php3","r");
if ($fp)
{ print"The file exists!"; }
else
{ print"The file does not exist"; }

Ik heb een database met links.
Door een query uit te voeren kan ik in de database erbij zetten of de URL actief moet zijn.

Acties:
  • 0 Henk 'm!

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op maandag 06 mei 2002 11:42 schreef Brabrabra het volgende:

[..]

Hmmm, sorry dat ik dat zelf niet gezien had |:( Noujah, iig bedankt :)

Er is dus geen efficientere manier om op broken links te controleren :?
Eerste wat ik zou doen is een ping op de host gooien. Die gaat lekker snel en kost ook niet zoveel tijd als een timeout van een niet bestaande host.

Krijg je wel antwoord, dan moet je de file gaan requesten. Echter zoals jij dat nu doet, bij een wel bestaande host, en de file bestaat niet, dan geeft jouw code geen foutmelding dacht ik.
Dit omdat een webserver een 404 reply geeft (is ook een file) en dat reken jij goed :)

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 12:19
Op maandag 06 mei 2002 11:42 schreef Brabrabra het volgende:
Er is dus geen efficientere manier om op broken links te controleren :?
Je zult ze toch moeten openen voordat je kunt constateren dat ze stuk zijn. De meest efficiente methode (imho) zou het gebruik van de CURL functies zijn, zodat je alleen een HEAD-request kan doen en aan de hand van dat resultaat constateren of de link nog geldig is of niet. Dan hoef je dus geen daadwerkelijke content over te sturen.

Acties:
  • 0 Henk 'm!

  • GGS_206
  • Registratie: Juli 2001
  • Niet online

GGS_206

Oranje!

Oops, naja beetje ochtendhumeurtje wel ja, PC wou net niet zoals ik wou, maar bedankt van de vele reply's :D :P

T.net ID. Bekijk het maar es eem..
‹(◕‿◕)›


Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
(jarig!)
Lama... ik had het verkeerd opgevat

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

  • Brabrabra
  • Registratie: Januari 2002
  • Laatst online: 12:16

Brabrabra

Chaoss ahv

Topicstarter
Op maandag 06 mei 2002 12:03 schreef Soultaker het volgende:
De meest efficiente methode (imho) zou het gebruik van de CURL functies zijn, zodat je alleen een HEAD-request kan doen en aan de hand van dat resultaat constateren of de link nog geldig is of niet. Dan hoef je dus geen daadwerkelijke content over te sturen.
Ik snap niet precies wat ik allemaal moet doen om dat CURL pakket in te stellen. Kheb em al gedownload, maar verder kom ik er niet echt uit, kan iemand mij helpen :?

Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!


Acties:
  • 0 Henk 'm!

  • Brabrabra
  • Registratie: Januari 2002
  • Laatst online: 12:16

Brabrabra

Chaoss ahv

Topicstarter
Ik heb nu dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
while ($rij = mysql_fetch_array($result))
  {
  $URL=$rij[URL];
  if (substr($URL, 0, 7)!="http://")
    $URL="http://".$URL;

  $file = @fopen ("$URL", "r");
  if (!$file)
    printf("%s bestaat niet.\n",$URL);
  else
    printf("%s bestaat wel.\n",$URL);
    }

Maar het gaat niet zo snel, en omdat hij een timeout krijgt, heeftie niet de tijd om alle 48 urls te bekijken. Hoe los ik dit op?

Supergrover heeft een vogeltje gered. Dat vogeltje zat heel hoog in een boom en durfde niet naar beneden te klimmen!


Acties:
  • 0 Henk 'm!

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Heb je mijn vorige post gelezen?

En je kan de executietijd van PHP verhogen (staat standaard op 30s) in php.ini

Acties:
  • 0 Henk 'm!

  • Lord-M
  • Registratie: September 2000
  • Laatst online: 31-07 18:49
Pagina: 1