Gzc。。。 2021-11-30 01:45 采纳率: 93.8%
浏览 55
已结题

下面函数能查出thinkphp哪里的错误吗


    public function refreshbatch(){
        $ids = '17882,17880';
        !preg_match('#^[\d,]+$#', $ids) && $this->error('参数错误!');
        $site_model = M('Site');
        $site_refresh_model = D('SiteRefresh');
        if($ids){
            $ids = explode(',', $ids);
            if(count($ids) > 0){
                $success = 0;
                foreach ($ids as $k=>$v){
                    $map = array(
                        'id'        =>    $v,
                    );
                    $site = $site_model->where($map)->find();
print_r($site);
                    $site_id = $site['id'];
                    if($site_id && !$site_refresh_model->where(array('site_id'=>$site_id,'state'=>0))->count()){
                        $site_refresh_model->build($site_id, $site['site_domain']) && $success++;
                    }
                }
                if($success > 0){
                    $this->success('刷新成功,待系统更新!');
                }
            }
        }
        $this->error('刷新失败,也许网站正待刷新状态!');
    }

print_r($site)的数组结果$site_id 值也正常;Array ( [id] => 17882 [member_id] => 212 [cate_id] => 12 [site_name] => yy网 [site_domain] => http://www.123.com [site_lang] => 1 [price] => 60.00 [price_member] => 60.00 [show_type] => 1 [allow] => 1 [state] => 1 [sort] => 255 [remark] => [is_rec] => 0 [is_best] => 0 [is_promote] => 0 [http_code] => 0 [auto_link] => 0 [refresh_time] => 1638173761 [update_time] => 0 [add_time] => 1638173749 ) Array ( [id] => 17880 [member_id] => 212 [cate_id] => 11 [site_name] => xx网 [site_domain] => http://www.abc.com [site_lang] => 1 [price] => 200.00 [price_member] => 200.00 [show_type] => 1 [allow] => 1 [state] => 1 [sort] => 255 [remark] => [is_rec] => 0 [is_best] => 0 [is_promote] => 0 [http_code] => 0 [auto_link] => 0 [refresh_time] => 1638172406 [update_time] => 1637902351 [add_time] => 1637902312 )

build函数

class SiteRefreshModel extends RelationModel{
    
    /**
     * 创建更新数据
     * @author manzige@foxmail.com
     * @param integer $site_id
     * @param string $site_domain
     */
    public function build($site_id, $site_domain=null){
        static $count = 0;
        if(empty($site_domain)){
            $site_domain = M('Site')->where(array('id'=>$site_id))->getField('site_domain');
        }
        $time = time()+$count*10;
        for($i=0; $i<=2; $i++){
            $datas[] = array(
                'site_id'        =>    $site_id,
                'site_domain'    =>    $site_domain,
                'state'            =>    0,
                'type'            =>    $i,
                'update_time'    =>    $time+$i,
                'add_time'        =>    $time+$i
            );
        }
        $res = $this->addAll($datas);
        $res && $count++;
        
        return $res;
    }
}

一直都'刷新失败,也许网站正待刷新状态!',哪位大大能指教下能根据这两个函数查哪里出错导致的吗?1

展开全部

  • 写回答

1条回答 默认 最新

  • 明日晴空 2021-12-01 01:08
    关注
    
     if($success > 0){
                        $this->success('刷新成功,待系统更新!');
                    }
    

    1、这个条件不执行,肯定$success > 0 条件不成立;
    2、然后往上推$success更改的地方

    if($site_id && !$site_refresh_model->where(array('site_id'=>$site_id,'state'=>0))->count()){
                            $site_refresh_model->build($site_id, $site['site_domain']) && $success++;
                        }
    
    
    

    如果$site_id有值,就打印一下后面执行的结果是否有值,或者在条件内部打印内容,看是否执行就能知道问题了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    Gzc。。。 2021-12-01 04:27

    谢谢大大的回答,是不是array('site_id'=>$site_id这里的原因啊好像array里是不能有变量的吗?是原程序的代码写错了?

    回复
    Gzc。。。 2021-12-01 04:36

    !$site_refresh_model这里的感叹号想i表达的是什么条件呢,不能'site_id'=>$site_id?不通啊,后面的单箭头count()是什么意思呢

    回复
    明日晴空 回复 Gzc。。。 2021-12-01 09:01

    1、!是取反的意思,比如 !true 等于 false
    2、->count() 是统计 符合条件的记录条数。
    3、打印一下这个值:$site_refresh_model->where(array('site_id'=>$site_id,'state'=>0))->count();
    如果有值,你的条件就不成立,因为!取反了。所以你把!去除应该就没问题

    回复
    展开全部5条评论
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月2日
  • 已采纳回答 12月2日
  • 修改了问题 11月30日
  • 修改了问题 11月30日
  • 展开全部
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部