Untitled

 avatar
unknown
php
2 years ago
1.7 kB
4
Indexable
$start = strtotime('yesterday');
        $end = strtotime('today');
        $data = [];
        $params = [];
        $date = date('Y-m-d', $start);
        $sql = 'SELECT user_id , platform, install_ts FROM app_installs WHERE user_id IS NOT NULL AND install_ts BETWEEN :start AND :end';

        foreach ($this->site_dbs as $site_db)
        {
            $installs = $this->_app->db->getAll($sql, ['start' => $start, 'end' => $end], $site_db);

            foreach ($installs as $ins)
            {
                try
                {
                    $u = new MUserAdmin($ins['user_id'], $site_db);
                    $p = [
                        'site_id' => $u->site_id,
                        'app_platform' => $ins['platform'],
                        'voc' => $u->voc,
                        'country_iso' => $u->getGeoData()->country,
                        'date' => $date
                    ];

                    $key = implode('_', $p);
                    $data[$key] = !empty($data[$key]) ? $data[$key] + 1 : 1;
                    $params[$key] = $p;
                }
                catch (Exception $e)
                {
                    continue;
                }
            }
        }

        $sql = 'UPDATE mobile_app_stats SET installs_cnt = installs_cnt + :installs_cnt WHERE site_id = :site_id AND 
            app_platform = :app_platform AND voc = :voc AND country_iso = :country_iso AND date = :date ';

        foreach ($data as $k => $cnt)
        {
            $params[$k]['installs_cnt'] = $cnt;
            $this->_app->db->query($sql, $params[$k], C::Db()->STATS);
        }
Editor is loading...