Summary of knowledge points
1.PHP code
function ZQrand($classid , $num){
global $dbtbpre,$empire;
/* 检测json文件是否存在 */
$file_arrs = glob(ECMS_PATH."d/json/*.json");
$file_cache = $file_arrs[0];
//缓存整个news表的数据
if(!file_exists($file_cache) || time()-@filemtime($file_cache)>86400){
//创建文件夹
@mkdir(ECMS_PATH."d/json/",0777);
//查询分类
$hm_class=$empire->query("select classid from {$dbtbpre}enewsclass");
while($hm_r=$empire->fetch($hm_class))
{
//查询分类下面的所有id
$hm_news=$empire->query("SELECT id FROM `{$dbtbpre}ecms_news` WHERE `classid` = {$hm_r[classid]}");
while($hm_nr=$empire->fetch($hm_news))
{
$news_data[] = $hm_nr[id];
$all_id[] = $hm_nr[id];
}
file_put_contents(ECMS_PATH . "d/json/" . $hm_r['classid'] . ".json",json_encode($news_data));
unset($news_data);
}
file_put_contents(ECMS_PATH . "d/json/" . allId . ".json",json_encode($all_id));
}
$num = (int) empty($num)?10:$num;
$classid = (int)$classid;
// 获取所有的文件
$hm_class=$empire->fetch1("select classid from {$dbtbpre}enewsclass where classid = {$classid}");
if(empty($hm_class[classid])){
// 随机调用
$file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/allId.json"),true);
}else{
//调用栏目
$file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/{$classid}.json"),true);
if(empty($file_arrs)){
$file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/allId.json"),true);
}
}
if(empty($file_arrs)){
return '';
}else{
for ($rani=1; $rani<=$num; $rani++){
$rand_id.= $file_arrs[mt_rand(0,count($file_arrs)-1)].",";
}
$rand_id = rtrim($rand_id,",");
$where = "id in ($rand_id)";
return $where;
}
}2.js code, mainly used to close pop-up windows, scheduled
setTimeout(function(){
window.close();
document.onload = window.close();
},1000);2022.8.19 Code improvements:
function ZQrand($classid , $num = 100){
global $dbtbpre,$empire;
ZQcread();
$num = (int) $num*3;
$classid = (int)$classid;
// 获取所有的文件
$hm_class=$empire->fetch1("select classid from {$dbtbpre}enewsclass where classid = {$classid} and `bclassid` != 0");
if(empty($hm_class[classid])){
// 随机调用
$file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/allId.json"),true);
}else{
//调用栏目
$file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/classId.json"),true);
$file_arrs = $file_arrs[$classid];
}
if(empty($file_arrs)){
return '';
}else{
for ($rani=0; $rani<$num; $rani++){
$rand_id.= $file_arrs[mt_rand(0,count($file_arrs)-1)].",";
}
$rand_id = rtrim($rand_id,",");
$where = "id in ($rand_id)";
return $where;
}
}
function ZQcread(){//创建缓存文件
global $dbtbpre,$empire;
/* 检测json文件是否存在 */
$class_cache = ECMS_PATH."d/json/classId.json";
$all_cache = ECMS_PATH."d/json/allId.json";
//缓存整个news表的数据
// time()-@filemtime($file_cache)>86400
if(!file_exists($class_cache) || !file_exists($all_cache)){
//创建文件夹
@mkdir(ECMS_PATH."d/json/",0777);
//查询分类
$hm_class=$empire->query("select classid from {$dbtbpre}enewsclass");
while($hm_r=$empire->fetch($hm_class))
{
//查询分类下面的所有id
$hm_news=$empire->query("SELECT id FROM `{$dbtbpre}ecms_news` WHERE `classid` = {$hm_r[classid]}");
while($hm_nr=$empire->fetch($hm_news))
{
$class_data[$hm_r['classid']][] = $hm_nr[id];
$all_data[] = $hm_nr[id];
}
}
file_put_contents($class_cache,json_encode($class_data));
file_put_contents($all_cache,json_encode($all_data));
}
}Customers reported that bugs would occur during high-efficiency calls. After verification, it was found that the main reason was that the num parameter was limited. This has been improved.
10.5 Modify according to your own needs and back it up here
function ZQrand($classid , $num = 60){
global $dbtbpre,$empire;
/* 检测json文件是否存在 */
$file_arrs = glob(ECMS_PATH."d/json/*.json");
$file_cache = $file_arrs[0];
//缓存整个news表的数据
if(!file_exists($file_cache)){
//创建文件夹
@mkdir(ECMS_PATH."d/json/",0777);
//查询分类
$hm_class=$empire->query("select classid from {$dbtbpre}enewsclass");
while($hm_r=$empire->fetch($hm_class))
{
//查询分类下面的所有id
$hm_news=$empire->query("SELECT id FROM `{$dbtbpre}ecms_news` WHERE `classid` = {$hm_r[classid]}");
while($hm_nr=$empire->fetch($hm_news))
{
$news_data[] = $hm_nr[id];
}
file_put_contents(ECMS_PATH . "d/json/" . $hm_r['classid'] . ".json",json_encode($news_data));
unset($news_data);
}
//查询所有
$more = 0;
$hm_news2=$empire->query("SELECT id FROM `{$dbtbpre}ecms_news`");
while($hm_nr2=$empire->fetch($hm_news2))
{
$all_id[] = $hm_nr2[id];
if($more>=1000){
file_put_contents(ECMS_PATH . "d/json/allId{$hm_nr2[id]}.json",json_encode($all_id));
unset($all_id);
$more = 0;
}
$more++;
}
}
$num = (int) empty($num)?10:$num;
$classid = (int)$classid;
// 获取所有的文件
$hm_class=$empire->fetch1("select classid from {$dbtbpre}enewsclass where classid = {$classid} and bclassid != 0");
if(empty($hm_class[classid])){
// 随机调用
$file_arrs = glob(ECMS_PATH."d/json/allId*.json");
$counts = count(glob(ECMS_PATH."d/json/allId*.json")) - 1;
// print_r($file_arrs);
// echo $counts;
$file_arrs = $file_arrs[mt_rand(0,$counts)];
// echo $file_arrs;
$file_arrs = json_decode(file_get_contents($file_arrs),true);
}else{
//调用栏目
$file_arrs = json_decode(file_get_contents(ECMS_PATH."d/json/{$classid}.json"),true);
}
if(empty($file_arrs)){
return '';
}else{
for ($rani=1; $rani<=$num; $rani++){
$rand_id.= $file_arrs[mt_rand(0,count($file_arrs)-1)].",";
// echo mt_rand(1,500);
}
$rand_id = rtrim($rand_id,",");
$where = "id in ($rand_id)";
return $where;
}
}