Firebase PHP API会被积压,然后一次性出现在应用程序中

时间:2013-09-06 15:25:55

标签: php angularjs laravel firebase laravel-3

当用户通过我们的应用程序执行操作时,我正在使用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),
));

卡片对象很浅。

enter image description here

更新

我有两台计算机正在测试它。

  • 便宜的触摸屏宏基 - Windows7
  • 较老的康柏 - ElementaryOS

我注意到,在宏碁做之前,康柏很容易更新。也许这是一个RAM问题,javascript变量到大?我目前在活动源中有一个包含225个对象的数组。

更新2

  1. 我在我的应用中做了一个动作
  2. 发布到firebase
  3. Forge在添加记录时变为绿色
  4. 我的听众没有发生任何事。
  5. 我做了一到三次动作,我的应用程序会突然更新。
  6. 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);
    

    });

1 个答案:

答案 0 :(得分:0)

刚刚将我们的应用程序投入生产,并确定瓶颈在于PHP做了一些不应该做的事情。我通过重新组织代码并尽可能地将angularjs中的所有内容保存到firebase来解决这个问题。

在我的情况下,我反复向许多卷曲请求发出请求。因此,将其偏移到客户端而不是服务器端,它的工作效果更好。 (显而易见的原因)