Index: core/kernel/managers/cache_manager.php =================================================================== --- core/kernel/managers/cache_manager.php +++ core/kernel/managers/cache_manager.php @@ -802,10 +802,11 @@ if (!defined('IS_INSTALL') || !IS_INSTALL) { // delete cached mod-rewrite urls related to given prefix and id $delete_clause = isset($id) ? $prefix . ':' . $id : $prefix; - - $sql = 'DELETE FROM ' . TABLE_PREFIX . 'CachedUrls - WHERE Prefixes LIKE ' . $this->Conn->qstr('%|' . $delete_clause . '|%'); - $this->Conn->Query($sql); + $this->Conn->doUpdate( + array('Url' => '', 'Hash' => 0), + TABLE_PREFIX . 'CachedUrls', + 'Prefixes LIKE ' . $this->Conn->qstr('%|' . $delete_clause . '|%') + ); } } Index: core/units/admin/admin_config.php =================================================================== --- core/units/admin/admin_config.php +++ core/units/admin/admin_config.php @@ -30,6 +30,7 @@ 'ScheduledTasks' => Array ( 'optimize_performance' => Array ('EventName' => 'OnOptimizePerformance', 'RunSchedule' => '0 0 * * *'), + 'delete_expired_cached_urls' => array('EventName' => 'OnDeleteExpiredCachedUrlsScheduledTask', 'RunSchedule' => '0 */12 * * *'), ), 'TitlePresets' => Array ( Index: core/units/admin/admin_events_handler.php =================================================================== --- core/units/admin/admin_events_handler.php +++ core/units/admin/admin_events_handler.php @@ -1166,6 +1166,25 @@ } /** + * Deletes CachedUrls that have Hash equals to 0 + * + * @param kEvent $event Event. + * + * @return void + * @access protected + */ + protected function OnDeleteExpiredCachedUrlsScheduledTask(kEvent $event) + { + $sql = 'DELETE FROM ' . TABLE_PREFIX . 'CachedUrls + WHERE Hash = 0 + LIMIT 500'; + + do { + $this->Conn->Query($sql); + } while ( $this->Conn->getAffectedRows() == 500 ); + } + + /** * Returns popup size (by template), if not cached, then parse template to get value * * @param kEvent $event