web-dev-qa-db-ja.com

cronの実行とキャッシュ

私はUbuntuサーバーでDrupal 7.25を実行しています。バックグラウンドで実行する必要があるユーザー操作(フォーム)によって開始されるプロセスがあります。現在cron.phpを実行しています毎分crontab経由で私はこの記事を読んだ:

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

Cron.phpを実行しても、D7のキャッシュはクリアされますか?

1
Ken J

はい、cronを実行すると、キャッシュがクリアされます。cronを実行すると、「cache_clear_all」メソッドを呼び出す system_cron が呼び出されるためです。

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

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:設定されている場合、キャッシュIDまたはキャッシュIDの配列。それ以外の場合は、期限切れになる可能性があるすべてのキャッシュエントリが削除されます。 $ wildcard引数は、NULLに設定されている場合は無視されます。

つまり、完全なキャッシュのクリアは行われませんが、TTLよりも古いエントリはキャッシュから削除されます。

ただし、_{cache_page}_は、TTLに _CACHE_TEMPORARY_ を使用します( drupal_page_set_cache() を参照)。これらはcronを実行するたびに削除されます。コードはそれをサポートしていますが、パフォーマンス設定のTTLが何であっても、_-1_のexipres列に_{cache_page}_以外のものは見たことがありません。

8
mpdonadio