当用户通过我们的应用程序执行操作时,我正在使用Firebase的PHP API来更新Reporting / Dashboard AngularJS应用程序。问题是有时当我做得太快时,Angular应用程序不会立即从Firebase接收新数据。然后突然间它一下子收到了大量的新物品,而不是一次又一次地收到它们。
firebase是否限制了对其API的请求数量?这是一个架构设计缺陷吗?
Laravel框架http://laravel.com/
你可以看到这里没有什么特别的事情发生。
$fb = new firebase(Config::get('firebase.url'), Config::get('firebase.token'));
$fb->push("/" . Config::get('firebase.reports_feed') . "/" . Auth::user()->account_user_id, array(
'createdAt' => Date::timezone(Date::sql(), "UTC", Auth::user()->account()->timezone),
'message' => Auth::user()->name . " activated a '{$record->card->name}' system.",
'user' => array(
'id' => Auth::user()->id,
'name' => Auth::user()->name,
),
'reload' => false,
'processed' => false,
'record' => to_json($record),
));
卡片对象很浅。
我有两台计算机正在测试它。
我注意到,在宏碁做之前,康柏很容易更新。也许这是一个RAM问题,javascript变量到大?我目前在活动源中有一个包含225个对象的数组。
controllers.controller('ReportsCtrl',function($ scope,angularFire){ var ref = new Firebase($ scope.main.firebaseUrl +“/”+ $ scope.main.accountUserId); $ scope.feedItems = []; angularFire(ref,$ scope,“feedItems”);
$scope.$watch('feedItems', function(newVal, oldVal) {
_.each($scope.feedItems, function(item) {
if (!item.processed) {
toastr.info(item.message); // alert message that pops up
item.processed = true;
if (item.reload)
$scope.loadGoalStats();
}
});
$scope.feedItemsLength = _.toArray($scope.feedItems).length;
}, true);
});
答案 0 :(得分:0)
刚刚将我们的应用程序投入生产,并确定瓶颈在于PHP做了一些不应该做的事情。我通过重新组织代码并尽可能地将angularjs中的所有内容保存到firebase来解决这个问题。
在我的情况下,我反复向许多卷曲请求发出请求。因此,将其偏移到客户端而不是服务器端,它的工作效果更好。 (显而易见的原因)