我已经实现了一种方法来计算从查询中检索到的所有实体。如果实体超过 1000,我使用延续令牌继续
public static function countResults($storageAccountName, $tableName, $filter, $projections = null)
{
$count = 0;
$options = null;
$continue = false;
do
{
$options = Azure::getEntitiesFromTable($storageAccountName, $tableName, $filter, $projections, $options);
$currentResults = $options->getEntities();
$count += count($currentResults);
// if specified it means there are other results
$continue = (!is_null($options->getNextPartitionKey()) && !is_null($options->getNextRowKey()));
} while ($continue);
return $count;
}
只需返回 QueryEntitiesResult 对象并将其用作执行过滤器的方法的输入,在该过滤器中获取分区键和行键并将它们设置为传递给 TableRestProxy->queryEntities 的 QueryEntitiesOptions 对象
所以没有任何东西应用于延续令牌。问题是 TableRestProxy->queryEntities 将 $this->_encodeODataUriValue 应用于 pkey 和 rowkey。这会使令牌无效,并且总是返回相同的前 1000 个结果。删除它的工作编码。这是图书馆的错误吗?