每日XML从固定的外部URL下载到网络服务器

时间:2014-06-02 19:23:09

标签: php xml cron

我有多个URL,每个URL都指向一个XML文件,但需要花费几分钟手动指向URL并等待收集每个XML并将其保存到桌面。

因此我正在寻找一个可以在晚上自动访问URL(逐个)并将每个XML下载到Apache服务器上的文件夹的脚本。

所以我认为需要以下两个代码: 1. PHP脚本访问多个已定义的URL; 2. Cron脚本每晚在第-1点之上运行。

我似乎无法在网上找到任何相关内容,所以我希望与你同在。 我要提前感谢您付出的努力和时间。

亲切的问候, 理查德

2 个答案:

答案 0 :(得分:0)

class SimpleCrawler {
    private $url;
    private $data; 
    public function __construct($url){
         $this->url = $url;
         $this->load();
    }

    public function load(){
        $this->data = file_get_contents($this->url);
    }

    public function getData(){
       return $this->data;
    }


}

文件类:

Class File {
     protected static $instance;
     protected $isResource = false;
     public $item;

     public static function getInstance(){
         if(!self::$instance){
             self::$instance = new self();
         }

         return self::$instance;
     }

     public function setResource($flag){
          $this->isResource = $flag;
     }
     public static function fromFile($path){
         $obj = self::getInstance();
         $obj->item = $path;

         return $obj;
     }

     public static function fromSource($string){
         $obj = self::getInstance();
         $obj->item = $string;
         $obj->setResource(true);

         return $obj;
     }

     public function save($path){

       try {
        if($this->isResource){
            $fopen = fopen($path,'w');

            fwrite($fopen,$this->item);
        }
        else {
             copy($this->item,$path);
        }

       }
       Catch(Exception $e){
          throw $e;
       }
     }
}

以及如何使用它:

$getXML = new SimpleCrawler('http://mydomain.com/file.xml');
$xmlString = $getXML->getData();

$file = File::fromSource($xmlString);
$file->save("/my/writtable/path/file.xml");

我希望这有帮助..

警告:我是从心里写下来的,没有经过测试。

答案 1 :(得分:0)

如果XML脚本不需要身份验证,您可以使用简单的shell脚本执行此操作,并使用wget或curl下载文件

wget -O /local/path/myfile.xml http://example.com/myfile.xml

curl -o /local/path/myfile.xml http://example.com/myfile.xml