为什么在从RETS服务器获取数据时添加重复的帖子?

时间:2015-01-07 05:07:58

标签: wordpress rets

我正在尝试使用PHRETS从rets服务器添加wordpress中的帖子。不幸的是,正在添加重复的帖子我使用WP查询使用元键和值检查现有帖子。当我尝试添加10或50个帖子时,此代码运行良好,但当我将限制设置为4000时,它开始添加重复的帖子。我已经运行了很多次这段代码并且刷了很多次数据库。这是一个代码示例:

$query = "(922=MIAMI), (246=A)";
$search = $rets->SearchQuery("Property", $class, $query, array("SystemName" => 1, 'Limit' =>4550));

if ($rets->NumRows($search) > 0) {
    $fields_order = $rets->SearchGetFields($search);

    while ($record = $rets->FetchRow($search)) {
        foreach ($fields_order as $fo) { 
            if ($fo == 'sysid') { $systemid = $record[$fo] ; }
            if ($fo == '881') { $saddress = isset($record[$fo]) ? $record[$fo] : ""; }
            if ($fo == '214') { $sremarks = isset($record[$fo]) ? $record[$fo] : ""; }
        }

        $porpertytitle = $saddress;

        $args = array(
            'numberposts' => -1,
            'post_type' => 'property',
            'post_status' => 'publish',
            'meta_key' =>'sysid',
            'meta_value' => $systemid
        );

        $the_query = new WP_Query($args);

        if($the_query->have_posts()) {
            while ($the_query->have_posts()) {
                $the_query->the_post();
                unset($systemid);
                unset($args);
            }
        } else {
            $my_listing = array(
                'post_title' => $porpertytitle,
                'post_type' => 'property',
                'post_content' => $sremarks,
                'post_status' => 'publish',
            );

            $listing_post_id = wp_insert_post($my_listing);

            if($listing_post_id > 0) {
                update_post_meta($listing_post_id, 'sysid', $systemid);
            }

            unset($systemid);
            unset($args);
            unset($listing_post_id);
        }
        wp_reset_postdata();
    }
}

抱歉这段长代码。但我也尝试在每次循环后取消设置变量但不起作用。

1 个答案:

答案 0 :(得分:2)

我自己也有类似看似随意的重复问题。我终于确定问题是RETS服务器偏移是基于1而不是基于零。此外,如果您未通过请求传递偏移量,服务器将以不同于您的方式对结果进行排序。

如果您可以检查发送到服务器的请求,请查看第一个请求中是否包含offset=1。如果它为零或缺失,您将重复第一页的结果散布在后续页面中,这可能是4000页面大小的很多