最新公告
  • 欢迎您光临站长源码网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 帝国cms动态模式下,千万级文章定时发布,无需人工干预的方法

    正文概述 管理员   2024-04-10   166

    之前研究帝国cms的审核功能,不知道什么原 因,火车头发布文 章到帝国cms,设置是未审核,但是不一会又自动审核了,总之麻烦!

    为了避免过多的浪费时间,于是就没有去仔细研究!

    最近又需要用到审核功能,这下就头疼了!

    上千万文 章,火车头发布,发布到待审核很麻烦!

    于是我研究一番,采用了另外一种思路!

    我不用待审核功能,但是却能实现网站每天显示最新文 章!

    思路解析

    1.帝国cms的模版,我们在生成标签的时候,设置一下发布时间!

    我们从发布时间下手,发布时间小于当前时间,那么就调用。

    比如我设置一篇文 章发布时间是明天,那么标签就不调用这篇文 章,需要到明天指定时间才调用!

    附加S Q L条件:newstime <= '.time().'

    如果不想每次都加上S Q L条件,可以参考这篇文 章:《帝国cms修改PHP,直接设置小于文 章发布时间(newstime)的文 章调用条件》

    2.利用PHP修改帝国数据表里面的发布时间,为了上千万文 章全部能设置完时间,我写了两个PHP!

    第一个PHP负责读取整表的文 章,同时生成好发布时间。

    第二个PHP负责将设置数据库里面文 章的定时发布时间,每次修改100个!

    这样可以很有效率的完成时间的设定,并且不会给服务器造成大负担。

    第一个PHP代码

    <?php
    require('e/class/connect.php');        //引入数据库配 置文件和公共函数文件
    require('e/class/db_sq l.php');        //引入数据库操作文件
    $link=db_connect();                //连接MYS Q L
    $empire=new mysq lquery();        //声明数据库操作类
    $sq l=$empire->query("select id,title from {$dbtbpre}ecms_news");        //查询新闻表最新10条记录
    
    $num = 10;
    $i = 1;
    $n = 1;
    $s = 1;
    $newstime = strtotime("2023-8-21 6:20:30");
    while($r=$empire->fetch($sq l))        //循环获取查询记录
    {
        $br = '';
        $time = $num;
        if($num==1){
            if($s==0){
                $s = 1; 
                $n++;
            }
            $num = 10 + $n;
            $br = "<hr style='color:red'>";
            $s--;
            $newstime+=86400;
        }
        
        echo"{$i}标题:".$r['title']."-----{$time}---{$newstime}---".date("Y-m-d H:i:s",$newstime)."<br>{$br}";
        //  echo"{$i}--".$r['id']."--{$time}|{$br}";
        // echo $sq lUp = "UPDATE `phome_ecms_news` SET `newstime` = '{$newstime}' WHERE `id` = {$r['id']};";
        $array[] = array($r['id'],$newstime);
        $empire->query1($sq lUp);
        $i++;
        $num--;
    }
    
    file_put_contents("定时发布.json", json_encode($array));
    
    db_close();                        //关闭MYS Q L链接
    $empire=null;                        //注消操作类变量
    ?>

     

    第二个PHP代码

    <?
    $jsonFile = "定时发布.json";
    $array = json_decode(file_get_contents($jsonFile),true);
    
    if(empty($array)){
        die("已发布完成");
    }
    
    
    function getSequentialElements(&$array, $quantity) {
        // 检查数组长度和需求数量
        $arrayLength = count($array);
        if ($arrayLength <= $quantity) {
            $result = $array;
            $array = array_slice($array, $arrayLength);
            return $result; // 数组长度小于或等于需求数量,直接返回整个数组
        }
    
        // 从原数组中顺序取出指定数量的元素,并将其从原数组中删除
        $result = array_slice($array, 0, $quantity);
        $array = array_slice($array, $quantity);
    
        return $result;
    }
    
    
    $randomElements = getSequentialElements($array, 100);
    
    require('e/class/connect.php');        //引入数据库配 置文件和公共函数文件
    require('e/class/db_sq l.php');        //引入数据库操作文件
    $link=db_connect();                //连接MYS Q L
    $empire=new mysq lquery();        //声明数据库操作类
    
    $n=1;
    foreach($randomElements as $v){
        $sq l = "UPDATE `phome_ecms_news` SET `newstime` = '{$v[1]}' WHERE `id` = {$v[0]};";
        if($empire->query($sq l)){
            echo "{$n}成功设置定时发布,文 章ID:$v[0],发布时间:".date("Y-m-d H:i:s",$v[1])."<br>";
        
            $n++;
        }
    }
    
    
    file_put_contents($jsonFile,json_encode($array));
    
    
    db_close();                        //关闭MYS Q L链接
    $empire=null;                        //注消操作类变量
    ?>
    
    
    
    
    <meta http-equiv="refresh" content="0;">

    站长源码网 » 帝国cms动态模式下,千万级文章定时发布,无需人工干预的方法

    发表评论

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    支付宝支付
    微信支付
    余额支付
    ×
    微信扫码支付 0 元