get( 'htmlCacheUpdate' )->getAllQueuedJobs(); $pending = 0; $baseJobs = 0; $emptyJobs = 0; foreach ( $it as $job ) { $new = countRealJobs($job); if ($new === 0) { $emptyJobs++; } else { $pending += countRealJobs($job); $baseJobs++; } if ($baseJobs + $emptyJobs > 10000) { break; } } $ratio = $pending / $baseJobs; echo "Empty: $emptyJobs Jobs: $baseJobs Real: $pending Per real job: $ratio\n"; function countRealJobs($job) { global $wgUpdateRowsPerJob, $wgUpdateRowsPerQuery; $queue = [$job]; $pending = 0; $i = 0; while ($queue) { $job = array_pop($queue); if (++$i % 100 === 0) { echo "queue: ", count($queue), "\n"; } $params = $job->getParams(); if (isset($params['table']) &&!isset($params['pages'])) { $params['recursive'] = true; } if (!empty($params['recursive'])) { $jobs = BacklinkJobUtils::partitionBacklinkJob($job, $wgUpdateRowsPerJob, $wgUpdateRowsPerQuery, []); foreach ($jobs as $child) { $queue[] = $child; } } elseif ( isset($params['pages'])) { $pending += count($params['pages']); } else { $pending++; } } return $pending; }