Запуск и кэширование Cron


Я запускаю Drupal 7.25 на своем сервере Ubuntu. У меня есть процесс, запускаемый взаимодействием с пользователем (форма), который должен выполняться в фоновом режиме. В настоящее время у меня есть cron.php запускаемый каждую минуту через crontab. Я прочитал эту статью:

Http://www.metaltoad.com/blog/how-drupals-cron-killing-you-your-sleep-simple-cache-warmer

Работает ли cron.php все еще очищаете кэш в D7?

Author: pown, 2014-01-06

2 answers

Да, работает cron.php все еще очищайте кэш, так как запуск cron вызовет system_cron, который вызывает метод "cache_clear_all":

$cache_tables = array_merge(module_invoke_all('flush_caches'), $core);
foreach ($cache_tables as $table) {
  cache_clear_all(NULL, $table);
}
 3
Author: Matt, 2014-01-06 16:45:36

Если вы взглянете на system_cron(), вы увидите

$cache_tables = array_merge(module_invoke_all('flush_caches'), $core);
foreach ($cache_tables as $table) {
  cache_clear_all(NULL, $table);
}

Чтение документов для cache_clear_all($cid, $bin):

$ cid: Если задан, идентификатор кэша или массив идентификаторов кэша. В противном случае все записи кэша, срок действия которых может истечь, удаляются. Аргумент с подстановочным знаком $ будет проигнорирован, если установлено значение NULL.

Это означает, что полная очистка кэша не будет выполнена, но записи, возраст которых превышает их TTL, удаляются из кэша.

Однако {cache_page} использует CACHE_TEMPORARY для TTL (см. drupal_page_set_cache(), таким образом, они будут удаляться при каждом запуске cron. Хотя код поддерживает это, я никогда не видел ничего другого, кроме -1 в столбце exipres в {cache_page}, независимо от того, каковы значения TTL в настройках производительности.

 8
Author: mpdonadio, 2014-01-06 16:56:41