datei auf fremden server prüfen (explizit modified)

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Tekknotrip
Mitglied
Beiträge: 205
Registriert: 18.03.2003 16:17
Wohnort: Esslingen
Kontaktdaten:

datei auf fremden server prüfen (explizit modified)

Beitrag von Tekknotrip »

Hallo Leute,
ich habe ein XML File, was auf einen anderen Server liegt und alle 5 Minuten erneuert wird. Damit ich nicht ständig über xsl in html output parse möchte ich zuerst prüfen, ob das locale file (der letzte html output vom parser) älter ist, als das XML File auf dem anderen Server.

Wie stelle ich das an, dass ich ihm eine art Fake Get Verbindung zuschiesse, damit ich an die Header Infos der Datei komme (if-modified-since oder so ähnlich heisst die Variable)??

Für Hilfe wäre ich sehr dankbar!
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Geht warscheinlich nur direkt über Sockets (siehe [php:fsockopen])
Tekknotrip
Mitglied
Beiträge: 205
Registriert: 18.03.2003 16:17
Wohnort: Esslingen
Kontaktdaten:

Beitrag von Tekknotrip »

wie kann ich aber dabei ein file direkt ansprechen....das geht doch in dem fall nur mit einer direkten ansprache des servers!?
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

hast du auf den externen server zugiff?

ansonsten musst du dir ein scirpt suchen das sich mit dem http server unterhalten kann. ( in diesem script taucht das fsockopen wieder auf )

ah

edit: in dem kommantaren ist sogar eins das du verwenden kannst:

Code: Alles auswählen

<?php
   /*
   * @return boolean
   * @param  string $link
   * @desc  Überprüft die angegeben URL auf Erreichbarkeit (HTTP-Code: 200)
   */
   function url_validate( $link )
   {        
       $url_parts = @parse_url( $link );

       if ( empty( $url_parts["host"] ) ) return( false );

       if ( !empty( $url_parts["path"] ) )
       {
           $documentpath = $url_parts["path"];
       }
       else
       {
           $documentpath = "/";
       }

       if ( !empty( $url_parts["query"] ) )
       {
           $documentpath .= "?" . $url_parts["query"];
       }

       $host = $url_parts["host"];
       $port = $url_parts["port"];
       // Now (HTTP-)GET $documentpath at $host";

       if (empty( $port ) ) $port = "80";
       $socket = @fsockopen( $host, $port, $errno, $errstr, 30 );
       if (!$socket)
       {
           return(false);
       }
       else
       {
           fwrite ($socket, "HEAD ".$documentpath." HTTP/1.0\r\nHost: $host\r\n\r\n");
           // ab hier muss das script geändert werden...
           $http_response = fgets( $socket, 22 );

           if ( ereg("200 OK", $http_response, $regs ) )
           {
               return(true);
               fclose( $socket );
           } else
           {
//                echo "HTTP-Response: $http_response<br>";
               return(false);
           }
       }
   }
?> 
Tekknotrip
Mitglied
Beiträge: 205
Registriert: 18.03.2003 16:17
Wohnort: Esslingen
Kontaktdaten:

Beitrag von Tekknotrip »

Ahhh, danke....
Habe mittlerweile n anderes Problem, dass mich mein eigener Webserver nicht mehr durchlässt (falscher Header von Server 1 zu 2 :-) )

Ich mach jetzt einach immer einen 30 sek. check (ist das file 30 sek. alt? -> Wen ja, dann hol von server 2 das neue)
Antworten

Zurück zu „Coding & Technik“