[PHP] Last modified remote file opvragen?

Pagina: 1
Acties:

  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 09-09 12:39
Hoe kan je met php de datum opvragen van een remote bestand? geen lokaal bestand dus.

Want het is wel mogelijk met de functie 'filemtime' maar deze kan alleen voor lokale bestanden gebruikt worden.

Heb ook al zitten rotzooien met die fsocket, maar daar krijg ik niet de datum eruit wanneer het bestand het laatst gewijzigt is.

Wie kan mij helpen want ik zit al heel de avond te proberen maar ik kom geen stap verder.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je kan er weinig aan doen.
Met ftp kan je de (m??)time bekijken.
Maar bij http ben je afhankelijk van de header die de webserver mee geeft.

  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 09-09 12:39
Maar het is dus niet mogelijk om met behulp van de functie fsocket dan de datum van het bestand te lezen?

  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 09-09 12:39
Weet niemand hoe je dit op kan lossen?

  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 09-09 12:39
Nou voor de mensen die er niet achter kwamen heb ik het eindelijk toch gevonden omdat te realiseren. Met behulp van 2 functions die ik tegenkwam op phpbuilder en met hulp van de functie van Wausmaus is deze functie uiteindelijk ontstaan.

function remote_header($host,$path)
{
$fp = fsockopen ($host, 80, $errno, $errstr, 30);
@fputs ($fp, "HEAD $path HTTP/1.0\r\n");
@fputs($fp,"HOST: $host\r\n\r\n");
while (!feof($fp)) {
@$string = fgets ($fp,128);
$header = strtolower("$header|$string");
}
$header_array = split("Last-modified:",$header);
$header_array = split("\|",$header_array[1]);
$datum = $header_array[0];
fclose ($fp);
return ($datum);
}

echo remote_header("www.pcproblemen.net","\php\index2.php")

Ik hoop dat iemand er nog wat aan heeft, maar in ieder geval succes ermee.

Updated: Letop!
De functie is geupdate met een strtolower functie erbij omdat soms de server "Last-Modified"geeft en soms weer "Last-modified" dus vandaar.

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Op donderdag 06 september 2001 10:02 schreef barto018 het volgende:
echo remote_header("www.pcproblemen.net",\php\index2.php)
Moet dat eigenlijk niet:
code:
1
echo remote_header("www.pcproblemen.net","\php\index2.php");

zijn?
Dus met aanhalingstekens? Misschien dat het wel werkt, maar dit is netter, volgens mij...

Verwijderd

Heeft iemand dit al werkend? ik zoek precies hetzelfde, maar heb het nog niet werkend gehad, ik krijg een foutmelding '0' bij $errno, wat betekend dat er geen socket verbinding gemaakt kan worden...

ik kom nergens uit.

Verwijderd

Voor de liefhebber, deze functie berekent hoeveel dagen, uren, minuten, seconden het geleden dat een remote bestand (aangegeven door simpelweg de url in te voeren) aangepast is.

<?php

function lastmod($url,$timezone)
{
$url=parse_url($url);
$host = $url[host];
$path = $url[path];
$fp = fsockopen ($host, 80, $errno, $errstr, 30);
@fputs ($fp, "HEAD $path HTTP/1.0\r\n");
@fputs($fp,"HOST: $host\r\n\r\n");
while (!feof($fp))
{
@$string = fgets ($fp,128);
$header = strtolower("$header|$string");
}
$datum = explode("|",$header);
$header_array = split("last-modified:",$header);
$header2 = explode("|",$header_array[1]);
$timestamp = strtotime($header2[0]);
$nu = time();
$timezone = $timezone*3600;
$dif = ( ($nu-$timestamp)+$timezone );

$days = $dif/86400;
$dayparse = explode(".",$days);
$days = $dayparse[0];
$dif = $dif-($days*86400);

$hours = $dif/3600;
$hoursparse = explode(".",$hours);
$hours = $hoursparse[0];
$dif = $dif-($hours*3600);

$minutes = $dif/60;
$minutesparse = explode(".",$minutes);
$minutes = $minutesparse[0];
$dif = $dif-($minutes*60);

$seconds = $dif;

$result = "Last modified ".$days." day(s), ".$hours." hour(s), ".$minutes." minute(s) and ".$seconds." second(s) ago";

return ($result);
}

echo lastmod("http://webcam.4freakz.com/banners/webcam1.gif","+1");
?>
Pagina: 1