写了一段生成缓存的函数,大家觉得有什么不足之处?
代码的写的方式和风格方面,求评价
//cacheidfunction MakeThreeCache($ID){ $idArr = array( 'DIQU' => array('id', 'name', '/cacheDiqu', 3,1,'中国','/1.php',"SELECT * FROM gk_common_diqu WHERE `level`=%d AND upid='%d' "), 'INFOCAT' => array('id', 'name', '/cacheInfocat',3,0,'大分类','/0.php',"SELECT * FROM gk_info_cat WHERE `level`=%d <div style="color:transparent">本&文来源gaodai^.ma#com搞#代!码网</div><strong>搞gaodaima代码</strong>AND `able`=1 AND upid='%d' "), ); if(!array_key_exists($ID,$idArr)) return false; list($fnid,$fnvalue,$cacheDir,$deep,$upid1,$pos1,$firstFile,$selectSQL) = $idArr[$ID]; global $dsql; set_time_limit(0); $tm1 = microtime(true); $dir1 = DEDEDATA.$cacheDir; RmRecurse($dir1);//delete this dir first! if(!is_dir($dir1) && !mkdir($dir1,0777)) exit('--|目录创建失败!'.$dir1 ); $path1 = $dir1.$firstFile; $data1 = 'Execute('s1',sprintf($selectSQL,1,$upid1)); while($row1 = $dsql->GetArray('s1')) { $data1 .= "\n".$row1[$fnid]."\t=>\t'".$row1[$fnvalue]."',"; $tm2 = microtime(true); $pos2 = $pos1.' -> ['.$row1[$fnid].']'.$row1[$fnvalue]; $dir2 = $dir1."/".$row1[$fnid]; if(!is_dir($dir2) && !mkdir($dir2,0777)) { echo("\n--|--|目录创建失败!".$dir2); continue; } $path2 = sprintf('%s/%d.php',$dir2,$row1[$fnid]); $data2 = 'Execute('s2',sprintf($selectSQL,2,$row1[$fnid])); while($row2 = $dsql->GetArray('s2')) { $data2 .= "\n".$row2[$fnid]."\t=>\t'".$row2[$fnvalue]."',"; $tm3 = microtime(true); $pos3 = $pos2.' -> ['.$row2[$fnid].']'.$row2[$fnvalue]; $dir3 = $dir2."/".$row2[$fnid]; if(!is_dir($dir3) && !mkdir($dir3,0777)) { echo("\n--|--|--|目录创建失败!".$dir3); continue; } $path3 = sprintf('%s/%d.php',$dir3,$row2[$fnid]); $data3 = 'Execute('s3',sprintf($selectSQL,3,$row2[$fnid])); while($row3 = $dsql->GetArray('s3')) { $data3 .= "\n".$row3[$fnid]."\t=>\t'".$row3[$fnvalue]."',"; } $data3.= "\n);\n\n/* [level=3]all taken ".sprintf('%.6f',microtime(true)-$tm3)."s */\n?".'>'; $fp3 = fopen($path3,'w'); fwrite($fp3,$data3); fclose($fp3); } $data2.= "\n);\n\n/* [level=2]all taken ".sprintf('%.6f',microtime(true)-$tm2)."s */\n?".'>'; $fp2 = fopen($path2,'w'); fwrite($fp2,$data2); fclose($fp2); } $data1.= "\n);\n\n/* [level=1]all taken ".sprintf('%.6f',microtime(true)-$tm1)."s */\n?".'>'; $fp1 = fopen($path1,'w'); fwrite($fp1,$data1); fclose($fp1); return true;}
生成的内容1:(表diqu)
<?php/* CACHE: DIQU : 中国 -> [6]广东 -> [76]广州 *//* time: 2012-12-21 12:28:42 *//* path: D:/website/35***.com/www/data/cacheDiqu/6/76/76.php */$CACHE['DIQU']['6']['76'] = array(692 => '从化市',693 => '天河区',694 => '东山区',695 => '白云区',696 => '海珠区',697 => '荔湾区',698 => '越秀区',699 => '黄埔区',700 => '番禺区',701 => '花都区',702 => '增城区',703 => '从化区',704 => '市郊',);/* [level=3]all taken 0.002312s */?>
生成的内容2:(表infocat)
<?php/* CACHE: INFOCAT : 大分类 *//* time: 2012-12-21 12:28:43 *//* path: D:/website/***.com/www/data/cacheInfocat/0.php */$CACHE['INFOCAT'] = array(10001 => '照明工业',10152 => '电子元器件',10272 => '传媒、广电',10392 => '安全、防护',10603 => '包装',10788 => '纸业',10897 => '办公、文教',11183 => '数码、电脑',11384 => '电工电气',11694 => '纺织、皮革',11894 => '服装',12015 => '服饰',12069 => '机械及行业设备',13100 => '五金、工具',13506 => '化工',14224 => '精细化学品',14643 => '橡塑',14932 => '环保',15128 => '仪器仪表',15520 => '家居用品',15805 => '家用电器',15967 => '建筑、建材',16437 => '交通运输',16597 => '礼品、工艺品、饰品',16838 => '能源',16978 => '农业',17300 => '汽摩及配件',17636 => '食品、饮料',17906 => '通信产品',18034 => '玩具',18092 => '冶金矿产',18536 => '印刷',18712 => '运动、休闲',18940 => '商务服务',19177 => '项目合作',19233 => '二手设备转让',19278 => '加工',19455 => '代理',19512 => '库存积压',);/* [level=1]all taken 5.697496s */?>