コード例 #1
0
 public function defaultAction()
 {
     // Line chart
     $memcache = new \Memcached();
     $stats1 = $memcache->get('stats1');
     if ($stats1 === false) {
         $stats = Stat::select(DB::raw('max(`packages`) as packages'), DB::raw('sum(`added`) as added'), DB::raw('date(`created_at`) as date'))->orderBy('date', 'asc')->groupBy('date')->get();
         $stats1 = [['Date', 'Total', 'New']];
         foreach ($stats as $stat) {
             $stats1[] = [$stat->date, (int) $stat->packages, (int) $stat->added];
         }
         $memcache->set('stats1', $stats1, self::DAY);
     }
     // Domain table
     $memcache = new \Memcached();
     $stats2 = $memcache->get('stats2');
     if ($stats2 === false) {
         $stats2 = Package::select(['domain', DB::raw('count(domain) as count')])->groupBy('domain')->where('domain', '<>', '')->orderBy('count', 'desc')->get()->toArray();
         $memcache->set('stats2', $stats2, self::DAY);
     }
     // Types table
     $memcache = new \Memcached();
     $stats3 = $memcache->get('stats3');
     if ($stats3 === false || true) {
         $stats3 = Package::select(['type', DB::raw('count(type) as count')])->groupBy('type')->where('type', '<>', '')->having('count', '>', 9)->orderBy('count', 'desc')->get()->toArray();
         $memcache->set('stats3', $stats3, self::DAY);
     }
     $this->_setTitle('Stats');
     return new StatsView($stats1, $stats2, $stats3);
 }
コード例 #2
0
 public function cronNew()
 {
     // Get latest from Packagist
     $packgist = new Packagist('http://packagist.org');
     $packgist = $packgist->all();
     // Get latest from our database
     DB::table('packages')->select(['author', 'name'])->orderBy('name', 'asc')->chunk(5000, function ($results) {
         foreach ($results as $result) {
             $this->_currentPackages[] = $result['author'] . '/' . $result['name'];
         }
     });
     // Diff
     $needToDelete = array_diff($this->_currentPackages, $packgist);
     $needToAdd = array_diff($packgist, $this->_currentPackages);
     // Delete
     foreach ($needToDelete as $v) {
         list($author, $name) = explode('/', $v, 2);
         DB::table('packages')->where('author', '=', $author)->where('name', '=', $name)->delete();
     }
     // Add
     foreach ($needToAdd as $v) {
         list($author, $name) = explode('/', $v, 2);
         DB::table('packages')->insert(['author' => $author, 'name' => $name, 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s', 0)]);
     }
     // Save to stats table
     Stat::create(['packages' => count($packgist), 'added' => count($needToAdd), 'removed' => count($needToDelete)]);
     return ['added' => count($needToAdd), 'deleted' => count($needToDelete)];
 }