Запуск и кэширование 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?
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);
}
Если вы взглянете на 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 в настройках производительности.