使用kreait/firebase-php如何单次请求批量删除Firebase多条数据
单次请求批量删除Firebase数据的实现方法
你当前使用的循环逐条删除的方式会发起大量HTTP请求,性能极低,kreait/firebase-php可通过批量更新机制实现单次请求删除多条数据:
Firebase Realtime Database 支持在更新操作中将指定路径的值设为null,即可删除该路径对应的数据,我们可以把所有待删除的路径汇总为一个更新数组,单次提交即可完成批量删除。
适用Realtime Database的代码示例
$collection = '替换为你的集合路径'; $keys = [..待删除的数据key数组..]; $deleteBatch = []; foreach ($keys as $key) { // 构造待删除路径,值设为null表示删除 $deleteBatch[$collection . '/' . $key] = null; } // 根路径下提交批量更新,单次请求完成所有删除操作 $firebase->getReference('/')->update($deleteBatch);
注意事项
- 单次提交的删除路径不要超过500条,避免请求体积过大触发Firebase限流,数据量过大时可将key数组拆分为多个500条的分片分批提交。
- 该操作为原子操作,所有删除动作要么全部成功,要么全部失败,不会出现部分删除的异常。
- 如果你使用的是Firestore而非Realtime Database,可通过批量写接口实现,单次批量最多支持500条操作,代码示例如下:
$batch = $firestore->batch(); $collectionRef = $firestore->collection('替换为你的集合名'); $keys = [..待删除的文档ID数组..]; foreach ($keys as $docId) { $batch->delete($collectionRef->document($docId)); } $batch->commit();
内容的提问来源于stack exchange,提问作者Alex Victorov
相关产品推荐
相关产品推荐

