Troubleshooting
Diagnose and resolve common configuration issues.
Start here
vendor/bin/typo3 temporalcache:verify
The command checks the indexes and columns the queries need, the two strategy names, and the time slots when harmonization is enabled. It reports which check failed and exits with 1. See Verifying the setup for the full list of checks.
Cache not updating
Symptoms
- Temporal content does not appear or disappear at the scheduled time
- Menus show pages whose
starttimehas not been reached
Checks
-
Which timing strategy is active?
vendor/bin/typo3 temporalcache:analyzeCopied!Only
dynamicexpires the cache by itself.schedulerrelies entirely on the scheduler task, andhybriddoes for whichever content type is routed to it, so check that the task exists in the Scheduler module and that cron is running it. See Scheduler task. -
Do the indexes exist?
The extension ships them in
ext_tables.sql; TYPO3 creates them during the database compare, not at installation time.SHOW INDEX FROM pages WHERE Key_name LIKE 'idx_temporalcache%'; SHOW INDEX FROM tt_content WHERE Key_name LIKE 'idx_temporalcache%';Copied!Expected on both tables:
idx_overtemporalcache_ starttime (starttime, sys_andlanguage_ uid) idx_overtemporalcache_ endtime (endtime, sys_. If they are missing, run the database compare rather than creating them by hand:language_ uid) vendor/bin/typo3 extension:setupCopied!Admin Tools → Maintenance → Analyze Database Structure does the same from the backend.
-
Is the record actually visible?
The transition queries skip records that are deleted or hidden, and they filter on the language of the current context. A hidden record's
starttimenever triggers anything. -
Turn on debug logging.
advanced.debug_logging = 1Copied!grep TemporalCache var/log/typo3_*.log | tail -50Copied!With
dynamictiming, one entry per page cache generation shows the lifetime that was written and which maximum capped it.
High database load
Symptoms
- Slow page generation with
timing.strategy = dynamic - Many
MIN/(starttime) MINqueries in the slow query log(endtime)
What the extension queries
The dynamic strategy runs two MIN queries per monitored table — one for
starttime, one for endtime — on every page cache generation.
With the two default tables that is four queries.
Each table registered through Temporal adds two more.
The site-wide lookup used by global and per- scoping is cached
for the duration of the request; the two lookups of per- scoping are
not.
Options
- Make sure the indexes above exist — without them these are full table scans.
- Set
timing.to remove the queries from page generation entirely. This needs the scheduler task; read Scheduler task first.strategy = scheduler -
Check the query plan:
EXPLAIN SELECT MIN(starttime) FROM pages WHERE starttime > UNIX_TIMESTAMP() AND hidden = 0 AND deleted = 0 AND sys_language_uid IN (0, -1);Copied!The plan should use one of the
idx_indexes instead of scanning the table.temporalcache_*
Changing scoping. does not reduce this load: under dynamic timing
every scoping strategy performs the same kind of lookup, and per-
performs the site-wide one.
Harmonization not working
Symptoms
- The Content tab shows no harmonization column or no suggestions
- Timestamps stay where they were
Checks
harmonization.. While it is off, the service returns every timestamp unchanged and the backend module hides the column.enabled = 1 - The slots parse.
Entries must be
HH:orMM H:with hours 0-23 and minutes 0-59; anything else is dropped silently, and with no valid slot left nothing is harmonized.MM temporalcache:reports the parsed slots when harmonization is enabled.verify -
The tolerance is large enough. A timestamp is only moved when its nearest slot is at most
harmonization.seconds away.tolerance Slots 00:00,12:00 with tolerance 3600: 11:30 → nearest slot 12:00, 30 min away → harmonized to 12:00 10:30 → nearest slot 12:00, 90 min away → left at 10:30Copied!harmonization.harmonizes nothing at all: no timestamp is ever within a distance of zero of a slot unless it already sits on one.tolerance = 0 temporalcache:reports it asverify ROUNDING OFFrather than as an error, because switching rounding off is a valid choice. - The distance is measured on the circular day.
23:30 is 30 minutes from a
00:slot, because the nearest occurrence of that slot is the next day's.00 -
Harmonization is invoked, not automatic. Nothing rewrites timestamps when an editor saves a record. Use Harmonize selected in Tools → Temporal Cache → Content, or:
vendor/bin/typo3 temporalcache:harmonizeCopied!
Scheduler task
ext_localconf.php registers the task type, so Scheduler →
Create new task offers Temporal Cache: Process transitions.
Registering the type is not the same as scheduling it — see
Scheduler task.
If transitions are not processed, verify that the task exists and that the Scheduler itself runs:
crontab -l | grep scheduler
vendor/bin/typo3 scheduler:run
Configuration not taking effect
Typos in strategy names are not errors.
Scoping and Timing activate the strategy
whose name matches the configured value and fall back to the highest-priority
tagged strategy — global and dynamic — when none does.
A misspelled per- therefore behaves exactly like the default.
temporalcache: flags both values as INVALID.
Out-of-range values are clamped, not rejected.
advanced. of 0 or less is skipped in favour of 86400.
Two configuration sources.
The Extension Manager writes to config/system/settings.php;
config/system/additional.php is read afterwards, so an assignment there
overrides the Extension Manager value.
Check both files before concluding that a setting is ignored.
Getting help
Collect before reporting:
vendor/bin/typo3 extension:list | grep temporal_cache
vendor/bin/typo3 temporalcache:verify
vendor/bin/typo3 temporalcache:analyze
grep TemporalCache var/log/typo3_*.log | tail -50
Report at GitHub issues with the TYPO3 version, the extension version and the output above.
Next steps
- Optimization strategies - What each setting does
- Examples & presets - Complete configuration examples
- Dashboard - What the backend module reports
- Performance considerations - Performance implications