wget dönüş dosya indirildi

4 Cevap php

Ben bir php komut wget kullanarak ve indirilen dosyanın adını almak gerekiyor ediyorum.

Örneğin, ben çalışırsanız

<?php
  system('/usr/bin/wget -q --directory-prefix="./downloads/" http://www.google.com/');
?>

Ben indirme dizinde index.html adında bir dosya olacaktır.

EDIT: sayfa her zaman olsa google olmayacak, hedef bir görüntü veya stil olabilir, bu yüzden indirilen dosyanın adını bulmak gerekir.

Böyle bir şey var istiyorum:

<?php
  //Does not work:
  $filename = system('/usr/bin/wget -q --directory-prefix="./downloads/" http://www.google.com/');
  //$filename should contain "index.html"
?>

4 Cevap

Ben aşağıdaki kodu kullanarak dizindeki en son güncellenen dosyayı bulmak için php kullanarak sona erdi:

<?php
system('/usr/bin/wget -q --directory-prefix="./downloads/" http://www.google.com/');
$dir = "./downloads";

$newstamp = 0;
$newname = "";
$dc = opendir($dir);
while ($fn = readdir($dc)) {
  # Eliminate current directory, parent directory
  if (ereg('^\.{1,2}$',$fn)) continue;
  $timedat = filemtime("$dir/$fn");
  if ($timedat > $newstamp) {
    $newstamp = $timedat;
    $newname = $fn;
  }
}
// $newname contains the name of the most recently updated file
// $newstamp contains the time of the update to $newname
?>

Belki de bu cheating çeşit, ama neden olmasın:

  • Kendinizi wget oluşturmanız gerekir dosyanın adı karar
  • indirme o dosyaya yapılan gerektiğini wget belirtmek
  • indirme bittiğinde, bu dosyayı kullanın - Zaten adını bildiğiniz gibi.

Wget ve -O seçeneğini ;-) göz atın


For example, running this from the command-line :

wget 'http://www.google.com/' -O my-output-file.html

Adlı bir dosya oluşturur my-output-file.html.

İhtiyaçlarınız sadece almak gibi basit ise google.com, ardından PHP içinde bunu

$data=file_get_contents('http://www.google.com/');
file_put_contents($data,"./downloads/output.html");

Linux sistemleri gibi yapabilirsiniz:

system('/usr/bin/wget -q --directory-prefix="./downloads/" http://www.google.com/');
$filename = system('ls -tr ./downloads'); // $filename is now index.html

./downloads dizininde bir dosya oluşturarak başka bir işlem varsa bu çalışır.