@ndre@s: alter einer externen datei bestimmen

Hi,

wie kann man mit php das alter (last modify) einer datei bestimmen, die NICHT auf dem Server liegt, auf welchem das php-sacript läuft?

Vielen Dank für jeden hilfreichen Tipp.

Gruß

@ndre@s

  1. Hallo,

    wie kann man mit php das alter (last modify) einer datei bestimmen, die NICHT auf dem Server liegt, auf welchem das php-sacript läuft?

    Ist die Datei auf einem Webserver?
    Ist es eine statische Datei?
    Dann hast Du gute Chancen, das Last-Modified-Datum
    aus dem HTTP-Head auslesen zu koennen.

    Setze mit fsockopen() eine HEAD oder GET Abfrage
    auf die URL ab und werte den zurueckgegebenen
    HTTP-Head aus.

    Als Grundlage kann Dir folgendes weiterhelfen:
    http://www.dclp-faq.de/q/q-code-links-testen.html
    http://froemter.de/php/phpLinkCheck.phps

    Wenn Du einfach mal im Browser schauen willst,
    was der Server fuer einen HTTP-Head schickt,
    kannst Du natuerlich auch
    http://cgi.w3.org/cgi-bin/headers
    oder
    http://www.schroepl.net/cgi-bin/http_trace.pl
    benuetzen...

    Gruesse,

    Thomas

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
    1. Hello,

      Wenn Du einfach mal im Browser schauen willst,
      was der Server fuer einen HTTP-Head schickt,
      kannst Du natuerlich auch
      http://cgi.w3.org/cgi-bin/headers
      oder
      http://www.schroepl.net/cgi-bin/http_trace.pl
      benuetzen...

      Oder wenn Du im Browser sehen willst, was der Client dem Server gerade geschickt hat:

      <?php ### headers.php ###

      $_headers = getallheaders();

      echo "<pre>";
      print_r($_headers);
      echo "<hr>POST<br />\n";

      ?>

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    2. Hallo,

      wie kann man mit php das alter (last modify) einer datei bestimmen, die NICHT auf dem Server liegt, auf welchem das php-script läuft?

      Ist die Datei auf einem Webserver?

      JA

      Ist es eine statische Datei?

      Möglich, aber nicht notwendigerweise.

      Dann hast Du gute Chancen, das Last-Modified-Datum
      aus dem HTTP-Head auslesen zu koennen.

      Setze mit fsockopen() eine HEAD oder GET Abfrage
      auf die URL ab und werte den zurueckgegebenen
      HTTP-Head aus.

      Hi Thomas

      leider halfen mir die Links nicht weiter. Ich hab's mal getestet mit der HEADER-Abfrage, aber alle Abfragen bleiben leer (keine Antwort...)

      Was ist eigentlich bei php so schwer daran das Alter einer Datei zu bestimmen, mit Perl gehts doch auch ... :-(

      Gruß

      @ndre@s

      1. Hallo,

        Ist es eine statische Datei?
        Möglich, aber nicht notwendigerweise.

        Bei Dateien, die durch PHP geparst werden, ist
        normalerweise kein Last-Modified-Header dabei.
        (Dabei spielt es natuerlich keine Rolle,
        ob die Datei ***.html oder ***.php heisst...)

        leider halfen mir die Links nicht weiter. Ich hab's mal getestet mit der HEADER-Abfrage, aber alle Abfragen bleiben leer (keine Antwort...)

        Keine Antwort wuerde bedeuten:

        • Domain kann nicht aufgeloest werden
        • Webserver down
          oder sowas...

        Um welche Datei/Ressource (URL) geht es denn?

        Was ist eigentlich bei php so schwer daran das Alter einer Datei zu bestimmen, mit Perl gehts doch auch ... :-(

        Es ist nicht schwer, solange die Datei auf dem gleichen
        Rechner liegt wie das Skript und letzteres Zugriff auf
        erstere hat...
        Dann gibt es naemlich filemtime() und stat():
        http://www.php.net/manual/de/function.filemtime.php
        http://www.php.net/manual/de/function.stat.php

        http://www.php.net/manual/en/function.filemtime.php
        http://www.php.net/manual/en/function.stat.php

        Ein schwacher Trost:
        Ab PHP 5.0.0 wird es vielleicht moeglich, auch "http://"-URLs
        mit filemtime() oder stat() zu verwenden...

        Gruesse,

        Thomas

        --
        Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
        Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
        Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
  2. Hi Andreas!

    wie kann man mit php das alter (last modify) einer datei bestimmen, die NICHT auf dem Server liegt, auf welchem das php-sacript läuft?

    Weiss ich nicht. ABER: Wenn der Hintergrund folgender ist,
    dass du regelmaessig upgedatete Dateien einbindest bzw.
    also ein "Last Update=xy" angebenmoechtest von einer Sache,
    die du halt regelmaessig erstellen laesst...

    Wir machen das so, dass wir von dem Skript, das uns
    regelmaessig Dateien neu baut nach erfolgreichem Raus-
    schreiben der erzeugten Datei noch eine Minidatei
    'Timestamp' erzeugen, die wir dann gesondert auslesen
    (bei uns: einlesen, sprich via include in den Text
    einbinden) lassen.

    DAS hat den Vorteil, dass das Rausschreiben der Datenseiten
    auch schon mal schieflaufen kann. Dann hat man u.U. eine
    Ergebnisdatei mit einem neuen Speicherdatum, aber die
    enthaltenen Daten sind (z.T.) noch auf aelterem Stand.
    Und dann ist es korrekter, der 'Timestamp' wird nicht
    erneuert.

    Hoffe, ich konnte meinen Punkt klarmachen.

    Herzliche Gruesse

    Nicola

    1. wie kann man mit php das alter (last modify) einer datei bestimmen, die NICHT auf dem Server liegt, auf welchem das php-sacript läuft?

      Weiss ich nicht. ABER: Wenn der Hintergrund folgender ist,
      dass du regelmaessig upgedatete Dateien einbindest bzw.
      also ein "Last Update=xy" angebenmoechtest von einer Sache,
      die du halt regelmaessig erstellen laesst...

      Hi Nicola

      genau dass ist nicht der Fall. Es geht darum Links zu überprüfen, wenn sich die dahinter liegende Datei geändert hat.

      Gruß

      @ndre@s