0 ? $argv[2] : 10000)); } // Bulk insert releases into sphinx RT index. function populate_rt($table, $max) { if ($table === 'releases_rt') { DB::unprepared('SET SESSION group_concat_max_len=16384;'); DB::commit(); $query = 'SELECT r.id, r.name, r.searchname, r.fromname, IFNULL(GROUP_CONCAT(rf.name SEPARATOR " "),"") filename FROM releases r LEFT JOIN release_files rf ON(r.id=rf.releases_id) WHERE r.id > %d GROUP BY r.id ORDER BY r.id ASC LIMIT %d'; $totals = Release::query()->selectRaw('COUNT(id) AS c, MIN(id) AS min')->first(); if (! $totals) { exit("Could not get database information for releases table.\n"); } $total = $totals['c']; $minId = $totals['min']; } else { exit(); } $sphinx = new SphinxSearch(); $lastId = $minId - 1; echo "[Starting to populate sphinx RT index $table with $total releases.]".PHP_EOL; for ($i = $minId; $i <= ($total + $max + $minId); $i += $max) { $rows = DB::select(sprintf($query, $lastId, $max)); DB::commit(); if (! $rows) { continue; } $tempString = ''; foreach ($rows as $row) { if ($row->id > $lastId) { $lastId = $row->id; } switch ($table) { case 'releases_rt': $sphinx->insertRelease( [ 'id' => $row->id, 'name' => $row->name, 'searchname' => $row->searchname, 'fromname' => $row->fromname, 'filename' => $row->filename, ] ); break; } } if (! $tempString) { continue; } echo '.'; } echo "\n[Done]\n"; }