取数及;自托管XML提要

取数及;自托管XML提要,xml,ftp,feed,fetch,Xml,Ftp,Feed,Fetch,我遇到这样一种情况,即一家公司向我提供的xml文件有以下限制: 用户名/密码保护 存储在他们的ftp上 我不允许从我的申请中引用该文件 因此,我希望能想出一些办法,每小时获取xml文件(因为他们的文件每小时更新一次),并将其托管在我自己的域中 是否有人对创建类似的东西有任何建议,或者是否有任何现有的脚本可以为我这样做 非常感谢,, Glen您可以使用一点简单的PHP来缓存远程文件并提供本地副本 基于此示例,您可以执行以下操作(未经测试): 哪种语言(PHP、.NET c#等)/。。。这个文件有多

我遇到这样一种情况,即一家公司向我提供的xml文件有以下限制:

  • 用户名/密码保护
  • 存储在他们的ftp上
  • 我不允许从我的申请中引用该文件
  • 因此,我希望能想出一些办法,每小时获取xml文件(因为他们的文件每小时更新一次),并将其托管在我自己的域中

    是否有人对创建类似的东西有任何建议,或者是否有任何现有的脚本可以为我这样做

    非常感谢,,
    Glen

    您可以使用一点简单的PHP来缓存远程文件并提供本地副本

    基于此示例,您可以执行以下操作(未经测试):


    哪种语言(PHP、.NET c#等)/。。。这个文件有多大?我想我们使用的是支持.NET的windows服务器,但是php也被启用了。我可能更喜欢PHP,因为我能读到:)文件很小-在5KB以下,我想知道我的答案有帮助吗?当然有!我收到一个文本编码错误。。但我认为这是因为xml而不是代码。
    
    <?php
    $url = 'ftp://username:password@server.domain.com/folder/file.ext';
    #we need to do some caching here
    $cache_dir = dirname(__FILE__) . '/cache/'; // directory to store the cache
    $cache_file = $cache_dir . md5($url);
    $cache_time = 1 * 60 * 60; // time to cache file, # minutes * seconds
    
    // check the cache_dir variable
    if (is_dir($cache_dir) && 
        is_writable($cache_dir) && 
        file_exists($cache_file) && 
        (time() - $cache_time) < filemtime($cache_file)) {
        $data = file_get_contents($cache_file); // name of the cached file
    }
    else {
        $data = file_get_contents($url);
        file_put_contents($cache_file, $data); //go ahead and cache the file
    }
    
    
    // Compress output if we can.
    if (function_exists('ob_gzhandler')) {
        ob_start('ob_gzhandler');
    }
    
    
    header('Content-type: text/xml; charset=UTF-8'); // Change this as needed
    // think about client side caching...
    header('Cache-Control: must-revalidate');
    header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $cache_time) . ' GMT');
    echo $data;
    exit;