dtol41388 2016-12-14 11:26
浏览 46
已采纳

Google数据存储从select中获取不一致的结果

I seriously need help with GDS and PHP-GDS Library.

I am doing a fetch from outside google appengine using the fantastic php-gds library. So far the library works fine.

My problem is that my data fetch from GDS returns inconsistent results and I have no idea what the issue might be.

Please see code below:

    <?php
    //...
    //...
    $offset = 0;
    do{
       $query = "SELECT * FROM `KIND` order by _URI ASC limit 300 offset ".$offset;
       $tableList=[];
       $tableList = $this->obj_store->fetchAll($query);
       $offset += count($tableList);
       $allTables[] = $tableList;
       $totalRecords = $offset;
    }while(!empty($tableList));

    echo $totalRecords; // i expect total records to be equal to the number of entities in the KIND.
                        // but the results are inconsistent. In some cases, it is correct 
                        // but in most cases it is far less than the total records.
// I could have a KIND with 750 entities and only 721 will be returned in total.
// I could have a KIND with 900 entities and all entities will be returned.
// I could have a KIND with 4000 entities and only 1200 will be returned.
    ?>

Please help. Also when I run the exact same query in the cloud console I get the right entity count. (Hope this helps someone)

UPDATE

I ended up using cursors. New code below:

<?php
  $query = "SELECT * FROM `KIND`";
  $tableList=[];
  $queryInit = $this->obj_store->query($query);
  do{
      $page = $this->obj_store->fetchPage(300);// fetch page.
      $tableList = am($tableList,$page); //merge with existing records.
      $this->obj_store->setCursor($this->obj_store->getCursor());//set next cursor to previous last cursor
  }while(!empty($page)); //as long as page result is not empty.
?>
  • 写回答

1条回答 默认 最新

  • dongluobei9359 2016-12-15 19:29
    关注

    Try using a cursor instead of an offset. See the discussion of cursors (including samples in PHP) here: https://cloud.google.com/datastore/docs/concepts/queries#datastore-cursor-paging-php

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c