php - 将 PHP 与 Firebase 数据库一起使用很慢
问题描述
想问一下是否有人使用这个库一起使用了 PHP 和 Firebase: https ://firebase-php.readthedocs.io/en/latest/
出于某种原因,firebase 中的每一个键都需要很长时间才能退出。每个项目大约 700-800ms。10 项大约 8 秒等。为什么这么慢?
foreach ($data as $key => $value){
$this->database->getReference()->getChild($this->dbname)->getChild($userID)->getValue();
}
如果对象中有 100 个项目,则此循环可能会一直持续下去。为什么它这么慢,我该如何解决?
解决方案
以这种方式从 Firebase 读取数据,这些是影响性能的主要因素:
- 连接到 Firebase 服务器所需的时间。
- Firebase 服务器从磁盘获取数据所需的时间。
- 您请求的数据返回到您的机器所需的时间。
每个项目总共显然需要 700 毫秒。没有什么神奇的开关可以让这个过程变得更快,你要么需要更少地从数据库中询问,要么需要更少的调用。
提高性能的最常见方法:
- 请求更少的数据,这改进了#3(和#2)。当人们下载大量数据时,客户端的带宽通常是最大的限制因素。
- 从更快的连接拨打电话,这改进了#3 和#1。
- 想办法减少通话次数。当您使用其中一个 Firebase SDK 访问 Firebase 数据库时,这通常不是一个因素,因为它们可以通过单个连接对请求进行管道传输。但是 PHP 库是建立在 Firebase 的 REST API 之上的,每次调用可能会有更多的开销。
推荐阅读
- c# - 如何 ace.js 编辑器删除红色空格点?
- ruby-on-rails - 如何使用 Rails 5 将 SCA Stripe Checkout 与 Stripe Connect 集成
- vbscript - 有没有办法在 VBS 中导出变量?
- python - 在添加新列时计算 Pandas 中的时间差
- hadoop - 了解 Hadoop 生态系统的最佳方式是什么
- reactjs - 如何在 React 上设置 CSS 模块?
- javascript - 如何在导航目标屏幕中更新数据(道具)
- java - 使用显式锁被认为是昂贵的吗?
- instagram - 考虑到对 instagrams 私有 API 的重复更改,将哪些值传递到 instagrams query_hash
- javascript - 更改多个文本框的值(基于 ID 或输入类型)