Raktenwilli: Webseite erreichbar, überprüfen mit cUrl

Beitrag lesen

Wie schon von TS beschrieben wäre es ein „ressourcenschonender“ Weg, eine HEAD-Abfrage zu machen.

Da Du aber binnen „nullkommafastnichts“ ohnehin auf die Idee kommen wirst, weitere Informationen erlangen zu wollen, empfehle ich Dir cUrl zu verwenden. Das geht etwa so:

<?php 

$dst_url = 'https://www.example.com';

header( 'Content-Type text/plain' );

error_reporting( E_ALL );
ini_set( 'display_errors', 1);

$ch = curl_init();

curl_setopt( $ch, CURLOPT_URL, $dst_url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'HEAD' );
curl_setopt( $ch, CURLOPT_NOBODY, true );

$result = curl_exec( $ch );

print_r( curl_getinfo( $ch ) );

Ausgaben:

Array
(
    [url] => https://www.example.com/
    [content_type] => text/html; charset=UTF-8
    [http_code] => 200
    [header_size] => 352
    [request_size] => 53
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.589923
    [namelookup_time] => 0.001856
    [connect_time] => 0.145835
    [pretransfer_time] => 0.446154
    [size_upload] => 0
    [size_download] => 0
    [speed_download] => 0
    [speed_upload] => 0
    [download_content_length] => 648
    [upload_content_length] => -1
    [starttransfer_time] => 0.589903
    [redirect_time] => 0
    [redirect_url] => 
    [primary_ip] => 93.184.216.34
    [certinfo] => Array
        (
        )

    [primary_port] => 443
    [local_ip] => 192.168.1.2
    [local_port] => 41472
    [http_version] => 3
    [protocol] => 2
    [ssl_verifyresult] => 0
    [scheme] => HTTPS
    [appconnect_time_us] => 446046
    [connect_time_us] => 145835
    [namelookup_time_us] => 1856
    [pretransfer_time_us] => 446154
    [redirect_time_us] => 0
    [starttransfer_time_us] => 589903
    [total_time_us] => 589923
)

Ich denke damit hast Du einen guten Startpunkt für weitere Überlegungen und Planungen - z.B. hinsichtlich der Frage, welche Informationen Du wie weiterverarbeiten willst. Wenn z.B. keine "primary_ip" geliefert wird hast Du einen DNS-Fehler, den Du weiter untersuchen musst bzw. kannst. Im Erfolgsfall könnten Dich die Zeitangaben interessieren…

Mehr Informationen (z.B. Erklärungen zu den Items des Arrays) findest Du im PHP-Handbuch, hier mal ab curl_getinfo().

Vorteil: cURL gibt es auch in zahlreichen weiteren Programmsprachen, sogar als eigenständiges Programm. Ich würde erwarten, dass jeder Hoster das entsprechende PHP-Modul installiert hat.

Falls Du (was ich für einen Fehler halte) eine Testumgebung unter Windows benutzt (also Dein PHP unter Windows läuft solltest Du die Hinweise zur Installation lesen.