Pagina 1 van 1
Controleren of een pagina bestaat
Geplaatst: 30 aug 2005, 21:26
door ElbertF
Hoe kan ik met PHP het snelst controleren of een webpagina (niet op mijn eigen server) bestaat? Ik gebruik nu dit:
Werkt prima, maar
erg langzaam als de pagina niet bestaat. Ik wil eigenlijk binnen 5 seconden een stuk of 10 pagina's kunnen controleren. is_file() en file_exists() werken alleen met lokale bestanden.
Dank

Geplaatst: 31 aug 2005, 07:52
door WebSiteNet
Code: Selecteer alles
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "Autsj";
} else {
echo "Joepie";
}
http://nl2.php.net/fsockopen/
Geplaatst: 31 aug 2005, 08:56
door WebSiteNet
Ik heb even een mass-checker gemaakt. Misschien komt dat in jouw geval beter van pas:
Code: Selecteer alles
<?
$array = array(
"www.websitenet.nl" => 80,
"ftp.websitenet.nl" => 21,
"jgjhllgjlhgh.com" => 80
);
while(list($url, $port) = each($array))
{
echo "Checking " . $url . " on port " . $port . ": ";
$fp = fsockopen($url, $port, $errno, $errstr, 30);
if($fp)
{
echo '<b style="color: #00cc00;">Beschikbaar</b>';
}
else
{
echo '<b style="color: #ff0000;">Offline</b>';
}
echo "<br />\n";
}
echo "Complete";
?>
Geplaatst: 31 aug 2005, 20:50
door ElbertF
Dit is ongetwijfeld precies wat ik zoek, binnenkort ga ik het implementeren en laat ik weten wat mijn bevindingen zijn
Bedankt

Geplaatst: 31 aug 2005, 21:59
door ElbertF
Helaas blijkt dit ook veel vertraging op te leveren indien de pagina niet bestaat. Het gaat hierom:
http://etncrew.com/extra.php?page=3
Het gaat erom hoe lang er "Retrieving webcam status" onder het kopje "Webcams" staat.
Geplaatst: 31 aug 2005, 22:13
door Lontronics
Code: Selecteer alles
$array = array(
"www.websitenet.nl",
"www.etc.nl",
);
foreach ($array as $value)
{
$fp = @fopen("http://".$value,"rb");
if ($fp)
{
actie
}
}
Dit bleek voor mij het snelste om van ca. 200 websites informatie te checken
Maar ik ben uiteraard ook zeker nieuwsgierig naar eventuele andere opties....
Jan
Geplaatst: 31 aug 2005, 22:16
door ElbertF
Ja dat is dus exact hetzelfde als mijn eerste poging hierboven. Misschien is het mogelijk de timeout van fopen() of fsockopen() te verkorten, of aantal pogingen te verminderen (zonder php.ini aan te passen)..?
Geplaatst: 31 aug 2005, 22:22
door Lontronics
default_socket_timeout integer
Standaard timeout (in seconden) voor socket gebaseerde streams.
Die misschien?
Staat standaard op 60 vlgs
http://nl2.php.net/manual/nl/ref.filesy ... -url-fopen
Geplaatst: 31 aug 2005, 22:26
door Lontronics
Hier de info, ik ga morgen of zo zelf ook eens wat proberen
http://nl2.php.net/manual/nl/function.s ... imeout.php
Geplaatst: 31 aug 2005, 22:31
door ElbertF
Dit bedoel je denk ik, maar geen verschil. Ook dit kan ik niet gebruiken:
Dit veranderd ook niets:
Code: Selecteer alles
$cam_page = @fsockopen($webcam_id[$_GET[id]][ip], $webcam_id[$_GET[id]][port], $errno, $errstr, 2);
..waar de laatste "2" de "float timeout" is, volgens de PHP site.
// edit: ik vermoedt dat de serverinstellingen een manuele opgave van de timeout niet toestaan..?
Geplaatst: 01 sep 2005, 01:09
door mosymuis
Als fopen() en fsockopen() allebei niet voldoen, blijft er weinig over dan de Curl library te proberen. Wellicht werkt deze sneller, kwestie van testen.
http://nl3.php.net/curl
Geplaatst: 01 sep 2005, 01:26
door Montana
WebSiteNet schreef:Ik heb even een mass-checker gemaakt. Misschien komt dat in jouw geval beter van pas:
Code: Selecteer alles
<?
$array = array(
"www.websitenet.nl" => 80,
"ftp.websitenet.nl" => 21,
"jgjhllgjlhgh.com" => 80
);
while(list($url, $port) = each($array))
{
echo "Checking " . $url . " on port " . $port . ": ";
$fp = fsockopen($url, $port, $errno, $errstr, 30);
if($fp)
{
echo '<b style="color: #00cc00;">Beschikbaar</b>';
}
else
{
echo '<b style="color: #ff0000;">Offline</b>';
}
echo "<br />\n";
}
echo "Complete";
?>
$fp = fsockopen($url, $port, $errno, $errstr, 30);
die 30 kan je dacht ik ook verlagen in bv 10 seconde
alleen moet je wel uitkijken dat het niet te snel gaat want dan kan je krijgen dat die de site als offline ziet
ik heb dit gebruikt om te kijken of me chatserver online was
om zo een bericht te geven in het forum de status van de chat en wie der in de room waren
af en toe wou die wel eens offline weergeven terwijl de server aan stond

Geplaatst: 01 sep 2005, 10:07
door ElbertF
mosymuis schreef:Als fopen() en fsockopen() allebei niet voldoen, blijft er weinig over dan de Curl library te proberen. Wellicht werkt deze sneller, kwestie van testen.
http://nl3.php.net/curl
Vreemd genoeg geeft curl_init($uri) bij mij altijd TRUE..?
Montana schreef:$fp = fsockopen($url, $port, $errno, $errstr, 30);
die 30 kan je dacht ik ook verlagen in bv 10 seconde
Dat zei ik ook in mijn vorige bericht

. Maar ik heb het nog een keer geprobeerd en nu werkt het inderdaad wel! Ik had er een mailtje over gestuurd naar mijn provider, misschien dat zij het voor me hebben opgelost (ook al heb ik nog geen reactie gekregen).
Het werkt, ik heb een snelle
online/offline checker voor mijn webcams. Bedankt allemaal

Geplaatst: 01 sep 2005, 12:51
door Paul
Welke script heb je nu precies gebruikt? Vind het wel interesant

Geplaatst: 01 sep 2005, 19:26
door ElbertF
Ehm, bij elkaar zijn het 5 samengevoegde pagina's, maar dit is de checker + weergave van de lijst met statussen van de webcams:
Code: Selecteer alles
for ( $row = 0; $row < count($webcam); $row ++ )
{
$webcam_status = @fsockopen($webcam[$row][ip], $webcam[$row][port], $errno, $errstr, 1);
print add_zeros(count($webcam) - $row) . ' ' . BULLET_2 . ( $webcam_status ? '<a target="_top" href="*ROOT*extra.php?page=' . PAGE_EXTRA_WEBCAM . '&id=' . $webcam[$row][id] . '" title="">' : '' ) . $webcam[$row][name] . ( $webcam_status ? '</a>' : '' ) .
( ( $webcam[$row][add_date] >= ( mktime() - ( 60 * 60 * 24 * 7 * 2 ) ) ) ? ' <span class="flag">[ new ]</span>' : '' ) .
' [ ' . ( $webcam_status ? '<b>Online</b>' : 'Offline' ) . ' ]' .
( ( $webcam[$row][id] == $_GET[id] ) ? BULLET_5 : '' ) .
'<br />';
}
Als je meer wilt zien moet je het maar zeggen
