Prüfen ob Seite Online

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Prüfen ob Seite Online

    Hi,

    bisher prüfe ich mit folgendem Skript, ob eine Seite erreichbar ist:

    PHP-Code:
    $fp = @fsockopen ($server_url[$i], 80$errno$errstr$timeout); // versuchen, Server zu öffnen
      
    if(!$fp) { .. } else { ... } 
    Jetzt will mein Chef am letzten tag noch folgendes:

    Wenn der Server zwar on ist, aber die Seite nicht angezeigt werden kann, soll es auch ne fehlermeldung geben (das ganze is nen Cronjob ohne Ausgabe, der schreibt in eine MySQL DB)

    z.B. war es so, dass eine seite mittels falscher htaccess geschützt war, und somit nicht angezeigt werden konnt. Mein skript hat nur festgestellt: socket erreichbar, also online

    genau so soll es bei allen HTTP Status Codes fehlermeldungen geben.

    nur wie prüfe ich das ?

    wenn ich fopen mache und ann nach den status codes suche, is das eindeutig ? die fehlermeldungen können ja verschieden ausfallen, und nicht dass nich nur nach z.B. 401 suche und dann nen fehler melde, bloss weil ein artikel 401 euro kostet

    gibs eine Möglichkeit, und wenn ja, wie lauten die Funktionen, um in PHP eine seite abzurufen und die HTTP Statuscodes zu überprüfen

    thx & cya max


    An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

  • #2
    Wenn Du schon via fsockopen() auf den Server zugreifst ... warum nicht einfach 'ne HEAD abfrage ... ? Da kriegst Du dann 'nen Status code ... !
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      du meinst sicher sowas:

      telnet www.inf-wiss.uni-konstanz.de 80 (ENTER)
      GET /start.html HTTP/1.1 (ENTER)
      Host:www.inf-wiss.uni-konstanz.de (ENTER) (ENTER)


      werde das mal versuchen.

      Danke für den Tipp

      cya max


      An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

      Kommentar


      • #4
        Original geschrieben von MaxP0W3R
        du meinst sicher sowas:

        telnet www.inf-wiss.uni-konstanz.de 80 (ENTER)
        GET /start.html HTTP/1.1 (ENTER)
        nein, wenn goth HEAD schreibt, meint er sicher nicht GET, sondern - überraschung - HEAD.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          schau dir doch die User Contributed Notes von fsockopen. IMHO ist ein Bsp dabei, ich glaube 'ne Fkt. namens urlvalidate oder url_validate

          Kommentar


          • #6
            Mit Telnet klappts, aber unter PHP gibs ne Fehlermeldung

            Code:
            PHP-Code:
            if($fp) {
              
            fwrite ($fp"GET /index.htm HTTP/1.1\n");
              
            fwrite ($fp"Host:[url]www.horseweb.de\n[/url]");
              
            fwrite ($fp"\n");
              
            $index_seite fread($fp1024);
              echo 
            $index_seite;

            Fehlermeldung:

            Code:
            HTTP/1.1 404 Not Found Date: Tue, 16 Nov 2004 10:40:28
            GMT Server: Apache/1.3.31 (Unix) PHP/4.0.6 PHP/3.0.16
            Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 cb
            Not Found
            The requested URL /index.htm was not found on this server.
            
            0


            An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

            Kommentar


            • #7
              Original geschrieben von wahsaga
              nein, wenn goth HEAD schreibt, meint er sicher nicht GET, sondern - überraschung - HEAD.
              Überraschenderweise hab ich gegooglet und das ganze auch ausprobiert, und wenn ich nur nen HEAD sende, dann gibs immer nen 400 Bad Request, d.h. es muss ein GET vorrausgehen, oder was mache ichjetzt falsch ?

              GET und Head liefert auch 400 Bad Request...

              Zuletzt geändert von MaxP0W3R; 16.11.2004, 10:56.


              An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

              Kommentar


              • #8
                Original geschrieben von MaxP0W3R
                wenn ich nur nen HEAD sende, dann gibs immer nen 400 Bad Request
                tja, dann machst du wohl von der syntax her noch was falsch, denn ein HEAD-request auf www.horseweb.de/index.htm ergibt einen schönen 200er.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Per Definition sieht ein korrekter simpler HTTP/1.1 Request folgendermassen aus:

                  GET /index.htm HTTP/1.1
                  Host: www.horseweb.de

                  bzw.

                  HEAD /index.htm HTTP/1.1
                  Host: www.horseweb.de

                  So solltest Du's also umsetzen ... !

                  ... oder du schaust Dir wahsaga's Link an ...
                  carpe noctem

                  [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                  [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                  Kommentar


                  • #10
                    Ich glaub ich habs :

                    HEAD / HTTP/1.1\r\nHost:www.url.de


                    An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                    Kommentar


                    • #11
                      Für alle die es interressiert, so sieht z.B. die "geheim" Funktion des cronjobs aus (der cronjob selber ist sehr ähnlich aufgebaut) :

                      PHP-Code:
                      if(isset($_GET['url'])) {
                        echo 
                      "<html><head><title>Server - Alarm</title></head><body>";
                        
                      $errno 0;
                        
                      $errstr '';
                        
                      $fp fsockopen ($_GET['url'], 80, &$errno, &$errstr$timeout); // versuchen, server zu öffnen
                        
                      if($fp) {
                                      
                      fwrite ($fp"HEAD / HTTP/1.1\r\n");
                                    
                      fwrite ($fp"Host:".$_GET['url']."\r\n");
                                    
                      fwrite ($fp"\r\n");
                                    
                      $server '';
                                    while (!
                      feof($fp))
                                      {
                                        
                      $server .= fgets($fp256);
                                      }
                                      if(
                      preg_match('#HTTP/1.1 200 OK#',$server)) {
                                          echo 
                      "<p>Server <b>".$_GET['url']."</b> ist erreichbar.</p>";
                                      } else echo 
                      "<p>Fehler:<br><br><pre>".$server."</pre>";
                              } else {
                                    echo 
                      "<p>Server <b>".$_GET['url']."</b> ist nicht erreichbar.
                                                                 <br>Fehlernummer: "
                      .$errno." , Fehlerbeschreibung: ".$errstr."</p>";
                                      }
                        echo 
                      "</body></html>";
                        die();



                      An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                      Kommentar


                      • #12
                        Bei einem htaccess login funzt das leider nicht

                        anstatt Unauthorized kommt dann das loginfeld...

                        ka wie sich das im cronjob verhält...


                        An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                        Kommentar

                        Lädt...
                        X