Hallo, ik vraag via het volgende script een site op..
<?php
$location['html_file'] = 'http://www.website.nl';
$input = file_get_contents($location['html_file']);
$output = preg_replace("~\<HEAD>(.*?)\</HEAD>~si", "", $input);
$output = str_ireplace(array('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',
'<HTML>',
'<body>',
'</body>',
'</html>'),
array('',
'',
'',
'',
''), $output);
$url = $location['html_file'];
$bestand = fopen ($url, 'r');
if (!$bestand) {
$test = 'Momenteel niet beschikbaar';
} else {
$test = 'Website bestaat';
}
?>
Dit is een deel van het script..
Alleen het is best vaak zo dat deze site down ligt. Hierdoor probeert mijn site de site te openen en dan word hij enorm langzaam. Is er een manier om dit te voorkomen? Een laad tijd erop ofzo? of een geheel ander script?
Alvast bedankt
- Php vraag: Website opvragen
-
30-07-2009, 22:49 #1
- Berichten
- 62
- Lid sinds
- 15 Jaar
Php vraag: Website opvragen
-
In de schijnwerper
-
30-07-2009, 23:08 #2
- Berichten
- 13
- Lid sinds
- 16 Jaar
Je kan ook dit scriptje in een cronjob zetten (bv. om de 5 minuten) zodanig dat hij de opgevraagde gegevens opslaat in een database.
Zo merken de gebruikers van jouw website nooit iets van de downtime.
-
31-07-2009, 02:06 #3
- Berichten
- 83
- Lid sinds
- 18 Jaar
Aan de output te zien gaat het om een diverse input aan websites, misschien is het handig om te 'timen' hoelang het script bezig is met het openen van de website. Indien dit onder een bepaalde tijdsduur is, kun je de website blijven openen, maar als het te lang gaat duren kun je weergeven dat de website momenteel niet beschikbaar is..
-
31-07-2009, 10:24 #4
- Berichten
- 62
- Lid sinds
- 15 Jaar
Ja zoiets had ik ook in gedachten Bram, Maar hoe, haha. Zo goed is mijn php niet.
@ Frederic:
Als hij die cronjob uitvoert als de site offline ligt, krijg je dan ook een problemen? Want dan probeert hij toch de site te openen.
-
31-07-2009, 10:35 #5
- Berichten
- 13
- Lid sinds
- 16 Jaar
@ Frederic:
Als hij die cronjob uitvoert als de site offline ligt, krijg je dan ook een problemen? Want dan probeert hij toch de site te openen.
Een cronjob runt op de server zelf, dus niemand zal er last van hebben als de server het script uitvoert.
-
31-07-2009, 10:38 #6
- Berichten
- 263
- Lid sinds
- 18 Jaar
check of url bestaat voordat je verder gaat met je script, mocht de website down zijn dan gaat ie niet verder
Code:<? function url_exists($strURL) { $resURL = curl_init(); curl_setopt($resURL, CURLOPT_URL, $strURL); curl_setopt($resURL, CURLOPT_BINARYTRANSFER, 1); curl_setopt($resURL, CURLOPT_HEADERFUNCTION, 'curlHeaderCallback'); curl_setopt($resURL, CURLOPT_FAILONERROR, 1); curl_exec ($resURL); $intReturnCode = curl_getinfo($resURL, CURLINFO_HTTP_CODE); curl_close ($resURL); if ($intReturnCode != 200 && $intReturnCode != 302 && $intReturnCode != 304) { return false; }Else{ return true ; } } //Usage Example : If(url_exists("http://www.weberdev.com/addexample.php3")) { Echo"URL Exists"; }Else{ Echo"URL doesnot exist"; } ?>
-
31-07-2009, 10:49 #7
- Berichten
- 62
- Lid sinds
- 15 Jaar
check of url bestaat voordat je verder gaat met je script, mocht de website down zijn dan gaat ie niet verder
Code:<? function url_exists($strURL) { $resURL = curl_init(); curl_setopt($resURL, CURLOPT_URL, $strURL); curl_setopt($resURL, CURLOPT_BINARYTRANSFER, 1); curl_setopt($resURL, CURLOPT_HEADERFUNCTION, 'curlHeaderCallback'); curl_setopt($resURL, CURLOPT_FAILONERROR, 1); curl_exec ($resURL); $intReturnCode = curl_getinfo($resURL, CURLINFO_HTTP_CODE); curl_close ($resURL); if ($intReturnCode != 200 && $intReturnCode != 302 && $intReturnCode != 304) { return false; }Else{ return true ; } } //Usage Example : If(url_exists("http://www.weberdev.com/addexample.php3")) { Echo"URL Exists"; }Else{ Echo"URL doesnot exist"; } ?>
-
31-07-2009, 10:52 #8
- Berichten
- 263
- Lid sinds
- 18 Jaar
Je moet zelf het script in jouw script verwerken.
Mocht je dan alsnog timeouts krijgen dan komt dit omdat
1) Jouw server verbinding traag is
2) De server van de website die je opvraagt traag is
Hierdoor zal jouw PHP script in APACHE een timeout error geven, dit is standaard 30 seconden maar je kan het verhogen (het is een APACHE setting), al raadt ik je het af om het te verhogen want dat kan je server wel langzamer maken.
-
31-07-2009, 10:57 #9
- Berichten
- 62
- Lid sinds
- 15 Jaar
Ik krijg trouwens een foutmelding:
Warning: curl_exec() [function.curl-exec]: Could not call the CURLOPT_HEADERFUNCTION on line 9
Aanvullend bericht:
Ik begrijp je niet... dat scriptje van me zal binnen een milliseconde weten of een website/url up/down is.
Je moet zelf het script in jouw script verwerken.
Mocht je dan alsnog timeouts krijgen dan komt dit omdat
1) Jouw server verbinding traag is
2) De server van de website die je opvraagt traag is
Hierdoor zal jouw PHP script in APACHE een timeout error geven, dit is standaard 30 seconden maar je kan het verhogen (het is een APACHE setting), al raadt ik je het af om het te verhogen want dat kan je server wel langzamer maken.Laatst aangepast door Carla van Loon : 31-07-2009 om 11:00 Reden: Automatisch samengevoegd.
-
31-07-2009, 11:00 #10
- Berichten
- 13
- Lid sinds
- 16 Jaar
Met het volgende stukje code zou het moeten werken:
PHP Code:<?php
$wachttijd = 3; // Max. wachttijd in seconden
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "website.nl");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $wachttijd);
$output = curl_exec($ch);
curl_close($ch);
?>Laatst aangepast door Frederic Van Linthoudt : 31-07-2009 om 11:02 Reden: foutje in code
-
31-07-2009, 11:15 #11
- Berichten
- 263
- Lid sinds
- 18 Jaar
Ik krijg trouwens een foutmelding:
Warning: curl_exec() [function.curl-exec]: Could not call the CURLOPT_HEADERFUNCTION on line 9
Aanvullend bericht:
Het is nummer 2 haha :)
}
toevoegen, vraag me niet waarom ik heb nog weinig met curl gewerkt, je krijgt toch wel onder de foutmelding url bestaat wel/niet .. het werkt op mijn server nl wel?
-
31-07-2009, 13:45 #12
- Berichten
- 1.483
- Lid sinds
- 16 Jaar
Aan de output te zien gaat het om een diverse input aan websites, misschien is het handig om te 'timen' hoelang het script bezig is met het openen van de website. Indien dit onder een bepaalde tijdsduur is, kun je de website blijven openen, maar als het te lang gaat duren kun je weergeven dat de website momenteel niet beschikbaar is..
PHP Code:<?php
ini_set('default_socket_timeout', 1);
?>
Aanvullend bericht:
@Carla
Ik weet niet exact wat de bedoeling is met dit maar ik heb het ten opzichte van jou codering verbeterd:
PHP Code:<?php
// Time limit
set_time_limit(3);
// HTTP time limit
ini_set('default_socket_timeout', 2);
// De url van de website
$output['location'] = 'http://www.website.nl';
// Met ob_start(); vangen we eventuele errors op van file_get_contents
ob_start();
$output['source'] = file_get_contents($output['location']);
$output['errors'] = ob_get_clean();
// Controleren of er errors zijn opgetreden
if(!empty($output['errors']))
{
echo 'Domein bestaat niet of reageert te langzaam.';
} else
{
// Nu strippen we de output
$output['html'] = preg_replace("~\<HEAD>(.*?)\</HEAD>~si", "", $output['source']);
$output['html'] = str_ireplace(
array('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',
'<HTML>',
'<body>',
'</body>',
'</html>'),
array('',
'',
'',
'',
''), $output['html']);
// Melding doen website is online
echo 'Website is online';
}
?>Laatst aangepast door Arek van Schaijk : 31-07-2009 om 13:52 Reden: Automatisch samengevoegd.
-
03-08-2009, 17:44 #13
- Berichten
- 62
- Lid sinds
- 15 Jaar
Na wat knip en plak werk is het uiteindelijk gelukt met het stukje script van A van Schayk.
Enorm bedankt!
-
03-08-2009, 17:47 #14
- Berichten
- 1.483
- Lid sinds
- 16 Jaar
Geen dank hoor, je moet wat over hebben voor oude vrienden :-)
Aanvullend bericht:
+ De gedachten gang dame + PHP ;)
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic