我有一种情况,公司正在向我提供一个xml文件,其中包含以下限制:
所以我希望每小时拿出一些东西来获取xml文件(因为他们的文件每小时更新一次),然后将它托管在我自己的域中。
有人会有任何关于创建这样的东西的建议,或者是否有任何现有的脚本可以为我做这些?
非常感谢, 格伦
答案 0 :(得分:1)
您可以使用一小段PHP来缓存远程文件并提供本地副本。
基于此PHP Remote File Cache示例,您可以执行以下操作(未经测试):
<?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;