hotfix/远程访问多媒体中心
lmr@hainatravel.com 8 years ago
parent 30a5d6704a
commit e770243447

@ -1,137 +1,194 @@
<?php <?php
if (!defined('BASEPATH')) if (!defined('BASEPATH'))
exit('No direct script access allowed'); exit('No direct script access allowed');
class Cache extends CI_Controller class Cache extends CI_Controller
{ {
//缓存文件绝对路径 //缓存文件绝对路径
private $dir = ''; private $dir = '';
//存放缓存文件的数组 //存放缓存文件的数组
private $file = array(); private $file = array();
//存放缓存文件夹的数组 //存放缓存文件夹的数组
private $path = array(); private $path = array();
//缓存更新接口 //缓存更新接口
private $cache_api = ''; private $cache_api = '';
//缓存更新参数 //缓存更新参数
private $post_para = ''; private $post_para = '';
//当前站点域名 //当前站点域名
private $current_domain = ''; private $current_domain = '';
//文件更新日期 //文件更新日期
private $file_time = array(); private $file_time = array();
function __construct() function __construct()
{ {
parent::__construct(); parent::__construct();
$this->permission->is_admin(); $this->permission->is_admin();
$this->load->model('Area_model'); $this->load->model('Area_model');
$this->load->model('InfoStructures_model'); $this->load->model('InfoStructures_model');
$this->load->model('Information_model'); $this->load->model('Information_model');
$this->site_code = $this->config->item('site_code'); $this->site_code = $this->config->item('site_code');
} }
/** /**
* *
* 公有函数:扫描已有缓存文件并更新。 * 公有函数:扫描已有缓存文件并更新。
* *
* 必要参数: * 必要参数:
* @param String $site_code * @param String $site_code
* *
*/ */
public function update() public function update()
{ {
//设置缓存文件文件夹 //设置缓存文件文件夹
$cache_config = $this->config->item('cache'); $cache_config = $this->config->item('cache');
$current_cache_config = $cache_config[$this->site_code]; $current_cache_config = $cache_config[$this->site_code];
$this->dir = $current_cache_config['cache_path']; $this->dir = $current_cache_config['cache_path'];
//设置当前站点 //设置当前站点
$this->current_domain = $this->config->item('site_url'); $this->current_domain = $this->config->item('site_url');
//设置缓存更新接口及POST参数 //echo $this->config->item('site_url');
$this->cache_api = $current_cache_config['cache_api']; //设置缓存更新接口及POST参数
$this->post_para = $current_cache_config['cache_api_para']; $this->cache_api = $current_cache_config['cache_api'];
//遍历缓存文件夹 $this->post_para = $current_cache_config['cache_api_para'];
$this->tree($this->dir, $this->file, $this->path, $this->file_time); //遍历缓存文件夹
//按目录筛选结果 $this->tree($this->dir, $this->file, $this->path, $this->file_time);
$this->filter($this->file, $this->path); //按目录筛选结果
$this->filter($this->file, $this->path);
//整理需要传递到视图的数据
$data['file'] = $this->file; //整理需要传递到视图的数据
$data['path'] = $this->path; $data['file'] = $this->file;
$data['file_time'] = $this->file_time; $data['path'] = $this->path;
$data['cache_api'] = $this->cache_api; $data['file_time'] = $this->file_time;
$data['post_para'] = $this->post_para; $data['cache_api'] = $this->cache_api;
$data['post_para'] = $this->post_para;
//视图
$this->load->view('cache/update', $data); //视图
} $this->load->view('cache/update', $data);
}
/**
* /**
* 私有函数:递归遍历缓存文件夹,将目录存放到$path文件存放到$file。 *
* * 公有函数:扫描已有缓存文件并更新。
* 必要参数: *
* @param String $dir - 需要遍历的目录 * 必要参数:
* @param Array $file - 存放文件结果的数组引用 * @param String $site_code
* @param Array $path - 存放路径结果的数组引用 *
* @param Array $file_time - 存放文件更新日期的数组引用 */
* public function sitemap()
*/ {
private function tree($dir, &$file, &$path, &$file_time) header("Content-type:text/xml");
{ //设置缓存文件文件夹
$mydir = dir($dir); $cache_config = $this->config->item('cache');
while($f = $mydir->read()) $current_cache_config = $cache_config[$this->site_code];
{ $this->dir = $current_cache_config['cache_path'];
if(is_dir("$dir/$f") && $f!="." && $f!=".." && (strpos($dir, '/cn/')==false))
{ //设置当前站点
$path[] = "$dir/$f"; $this->current_domain = $this->config->item('site_url');
$this->tree("$dir/$f", $file, $path, $file_time); //设置缓存更新接口及POST参数
} $this->cache_api = $current_cache_config['cache_api'];
else $this->post_para = $current_cache_config['cache_api_para'];
{ //遍历缓存文件夹
if ($f!='.' && $f!='..' && (strpos($dir, '/cn/')==false)) $this->tree($this->dir, $this->file, $this->path, $this->file_time);
{ //按目录筛选结果
$file_temp = str_ireplace('index.htm###', '', $f.'###'); $this->filter($this->file, $this->path);
$file_temp = str_ireplace('###', '', $file_temp);
$path_temp = str_ireplace($this->dir, '', $dir); //整理需要传递到视图的数据
$url_temp = $this->current_domain.$path_temp.'/'.$file_temp; $data['file'] = $this->file;
$file_time[$url_temp] = date("F d Y H:i:s", filemtime("$dir/$f")); $data['path'] = $this->path;
$file[] = $url_temp; $data['file_time'] = $this->file_time;
} $data['cache_api'] = $this->cache_api;
} $data['post_para'] = $this->post_para;
}
$mydir->close(); //排序file数组
} sort ($data['file']);
//生成sitemap
/** $dom = new DomDocument('1.0', 'utf-8');
* $urlset = $dom->createElement('urlset');
* 私有函数:筛选目录和文件。 $urlset->setAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
* $dom->appendchild($urlset);
* 必要参数: foreach ($data['file'] as $f)
* @param Array $file - 存放文件结果的数组引用 {
* @param Array $path - 存放路径结果的数组引用 $url = $dom->createElement('url');
* $loc = $dom->createElement('loc');
* 可选参数POST参数 - $_POST['p'] $text = $dom->createTextNode($f);
* $loc->appendchild($text);
*/ $url->appendchild($loc);
private function filter(&$file, &$path) $urlset->appendchild($url);
{ }
if (isset($_POST['p']) && !empty($_POST['p']))
{ echo($dom->saveXML());
//删选文件
foreach ($file as &$f) }
{
(stripos($f, $_POST['p'])!==false) or $f = false;
} /**
$file = array_filter($file); *
//删选目录 * 私有函数:递归遍历缓存文件夹,将目录存放到$path文件存放到$file。
foreach ($path as &$p) *
{ * 必要参数:
(stripos($p, $_POST['p'])!==false) or $p = false; * @param String $dir - 需要遍历的目录
} * @param Array $file - 存放文件结果的数组引用
$path = array_filter($path); * @param Array $path - 存放路径结果的数组引用
} * @param Array $file_time - 存放文件更新日期的数组引用
} *
*/
} private function tree($dir, &$file, &$path, &$file_time)
//end of Cache {
$mydir = dir($dir);
while($f = $mydir->read())
{
if(is_dir("$dir/$f") && $f!="." && $f!=".." && (strpos($dir, '/cn/')==false))
{
$path[] = "$dir/$f";
$this->tree("$dir/$f", $file, $path, $file_time);
}
else
{
if ($f!='.' && $f!='..' && (strpos($dir, '/cn/')==false) && (strpos($f, '.pdf')===false))
{
$file_temp = str_ireplace('index.htm###', '', $f.'###');
$file_temp = str_ireplace('###', '', $file_temp);
$path_temp = str_ireplace($this->dir, '', $dir);
$url_temp = $this->current_domain.$path_temp.'/'.$file_temp;
$file_time[$url_temp] = date("F d Y H:i:s", filemtime("$dir/$f"));
$file[] = $url_temp;
}
}
}
$mydir->close();
}
/**
*
* 私有函数:筛选目录和文件。
*
* 必要参数:
* @param Array $file - 存放文件结果的数组引用
* @param Array $path - 存放路径结果的数组引用
*
* 可选参数POST参数 - $_POST['p']
*
*/
private function filter(&$file, &$path)
{
if (isset($_POST['p']) && !empty($_POST['p']))
{
//删选文件
foreach ($file as &$f)
{
(stripos($f, $_POST['p'])!==false) or $f = false;
}
$file = array_filter($file);
//删选目录
foreach ($path as &$p)
{
(stripos($p, $_POST['p'])!==false) or $p = false;
}
$path = array_filter($path);
}
}
}
//end of Cache

File diff suppressed because it is too large Load Diff

@ -23,7 +23,7 @@
$(function() { $(function() {
//更新静态页,异步请求队列(setp_set个) //更新静态页,异步请求队列(setp_set个)
var setp_set = 20; var setp_set = 6;
$('#update').on('click', function() { $('#update').on('click', function() {
var $data = $('.data'); var $data = $('.data');
for(var i=0; i<setp_set; i++) { for(var i=0; i<setp_set; i++) {

Loading…
Cancel
Save