我寫了這段代碼,它所做的是根據從數據庫中提取的信息設置路徑變量。然後它搜索目錄並提取我想要插入到我的頁面的文件。是否有快速有效的方式來掃描目錄並根據找到的文件生成標記?
我使用Smarty模板引擎,我的問題是即使這在我想要的範圍內工作。它運行速度非常慢,需要一段時間才能掃描整個頁面,然後在整個頁面加載之前拉取文件並進行標記。
// Load variables based on if the user has a custom theme applied or a default one
$theme_name = $default->get_theme('theme_dir_name', 'dash');
if($users->get_settings('theme_is_custom', $auth->session->get('user_id')) == 1)
{
$css_path = "/".$auth->session->get("user_name")."/css";
$theme_dir = dirname(__FILE__) . "/assets/users/".$users->get_user_id($_GET['user'])."/themes/".$theme_name."/tpl/";
$s->assign("css_dir", $css_path."/".$theme_name);
$s->assign("js_dir" , "/".$_GET['user']."/js/".$theme_name);
}else{
$css_path = "/css";
$theme_dir = dirname(__FILE__) . "/assets/default/themes/".$theme_name."/tpl/";
$s->assign("css_dir", $css_path."/".$theme_name);
$s->assign("js_dir" , "/js/".$theme_name);
}
// Load modules
foreach($users->get_active_module($auth->session->get('user_id')) as $m)
{
if(@$m['module_is_custom'] == 1)
{
$path = "/".$auth->session->get("user_id")."/modules/".$m['module_folder_name']."/index.php";
$dir = "/".$auth->session->get("user_id")."/modules/".$m['module_folder_name'];
}else{
$path = dirname(__FILE__)."/assets/default/modules/".$m['module_folder_name']."/index.php";
$dir = dirname(__FILE__)."/assets/default/modules/".$m['module_folder_name'];
$js = "/modules/default/".$m['module_folder_name']."/js/";
$css = "/modules/default/".$m['module_folder_name']."/css/";
}
$css_module = "";
$js_module = "";
$module = $s->fetch($path);
if($handle = opendir($dir."/css/"))
{
while(false !== ($file = readdir($handle)))
{
if($file != "." && $file != ".."){
$css_module .= '<link rel="stylesheet" href="'.$css.$file.'" />';
}
}
closedir($handle);
}
if($handle = opendir($dir."/js/"))
{
while(false !== ($file = readdir($handle)))
{
if($file != "." && $file != "..")
{
$js_module .= '<script type="text/javascript" src="'.$js.$file.'"></script>';
}
}
closedir($handle);
}
$s->assign($m['module_folder_name']."_module", $css_module."\n".$js_module."\n".$module);
}
編輯:
function getFileList($dir)
{
$retval = array();
if(substr($dir, -1) != "/")
$dir .= "/";
$d = @dir($dir) or die("getFileList: Failed opening directory $dir for reading");
while(false !== ($entry = $d->read()))
{
if($entry[0] == ".")
continue;
if(is_dir("$dir$entry"))
{
$retval[] = array("name" => "$dir$entry/", "type" => filetype("$dir$entry"), "size" => 0, "lastmod" => filemtime("$dir$entry"));
}elseif(is_readable("$dir$entry")){
$retval[] = array("name" => "$dir$entry", "type" => mime_content_type("$dir$entry"), "size" => filesize("$dir$entry"), "lastmod" => filemtime("$dir$entry"));
}
echo basename("$dir$entry")."<br />";
}
$d->close(); return $retval;
}
嗯,堅持讓我看看,如果我把它合在一起到我的應用程序 – Eli 2011-04-16 10:30:25
我把它合成爲我工作;-)我還添加了一條線 – Eli 2011-04-16 10:45:44