mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-07-20 16:42:59 +02:00
fixes #1830 faster way to calculate number of orphans
* store count result in config table, as a cache * resets this cache on invalidate_user_cache * instead of a costly SQL query with a LEFT JOIN, use 2 simple COUNT in the 2 tables, and compare
This commit is contained in:
@@ -2206,6 +2206,7 @@ UPDATE '.USER_CACHE_TABLE.'
|
||||
SET need_update = \'true\';';
|
||||
pwg_query($query);
|
||||
}
|
||||
conf_delete_param('count_orphans');
|
||||
trigger_notify('invalidate_user_cache', $full);
|
||||
}
|
||||
|
||||
@@ -3269,6 +3270,33 @@ SELECT path
|
||||
return count($ids);
|
||||
}
|
||||
|
||||
function count_orphans()
|
||||
{
|
||||
if (is_null(conf_get_param('count_orphans')))
|
||||
{
|
||||
// we don't care about the list of image_ids, we only care about the number
|
||||
// of orphans, so let's use a faster method than calling count(get_orphans())
|
||||
$query = '
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM '.IMAGES_TABLE.'
|
||||
;';
|
||||
list($image_counter_all) = pwg_db_fetch_row(pwg_query($query));
|
||||
|
||||
$query = '
|
||||
SELECT
|
||||
COUNT(DISTINCT(image_id))
|
||||
FROM '.IMAGE_CATEGORY_TABLE.'
|
||||
;';
|
||||
list($image_counter_in_categories) = pwg_db_fetch_row(pwg_query($query));
|
||||
|
||||
$counter = $image_counter_all - $image_counter_in_categories;
|
||||
conf_update_param('count_orphans', $counter, true);
|
||||
}
|
||||
|
||||
return conf_get_param('count_orphans');
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the list of image ids associated to no album
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user