Command-line interface
The extension registers four Symfony console commands. They are available through the TYPO3 console binary once the extension is installed and active.
vendor/bin/typo3 list temporalcache
Command overview
| Command | Description | Modifies data |
|---|---|---|
| temporalcache:analyze | Analyze temporal content and provide cache statistics | No |
| temporalcache:verify | Verify database indexes and extension configuration | No |
| temporalcache:list | List all temporal content with transition information | No |
| temporalcache:harmonize | Harmonize temporal fields to configured time slots | Yes |
Only temporalcache:harmonize is registered as schedulable
(schedulable: true in Configuration/).
The other three commands are not offered in the scheduler.
temporalcache:analyze
Reads temporal content and reports statistics, upcoming transitions and — when harmonization is enabled — the
reduction harmonization would achieve.
The command never writes to the database and always exits with code 0.
Options
| Option | Short | Value | Default | Description |
|---|---|---|---|---|
--workspace | -w | required | 0 | Workspace UID to analyze (0 = live workspace) |
--language | -l | required | 0 | Language UID to analyze (-1 = all languages, 0 = default language) |
--days | -d | required | 30 | Number of days to analyze for upcoming transitions |
Note
The statistics table is resolved per workspace only.
The --language value is applied to the transition analysis and the harmonization impact, not to the
content counts.
Output
The command prints these sections in order:
- Analysis context
- Workspace, language, analysis period and the current server time.
- Temporal content statistics
- Total temporal items, split into pages and content elements, and the distribution across start time only, end time only and both. If no temporal content exists at all, the command stops here with a warning.
- Upcoming transitions
- The number of transitions found in the analysis period, followed by the five days carrying the most
transitions.
Each day is rated
LOW(fewer than 5 transitions),MEDIUM(5 to 9) orHIGH(10 or more). With--verbosethe next ten transitions are listed with time, type, table and title. - Harmonization impact analysis
- Only when harmonization is enabled in the extension configuration.
Compares the number of original transitions with the number remaining after harmonization and shows the
resulting reduction.
With
--verbosethe configured time slots and the tolerance are listed as well. When harmonization is disabled, the command prints a note instead of this section. - Extension configuration
- Only with
--verbose. Scoping strategy, timing strategy, harmonization state, slots, tolerance and the auto-round setting.
Examples
vendor/bin/typo3 temporalcache:analyze
vendor/bin/typo3 temporalcache:analyze --workspace=1 --days=60 --verbose
vendor/bin/typo3 temporalcache:analyze --language=-1
temporalcache:verify
Checks that the database and the extension configuration are in the state the extension needs. The command takes no options of its own and writes nothing.
Exit code 0 means every check passed, exit code 1 means at least one check failed.
That makes the command usable as a health probe in monitoring or deployment pipelines.
Checks performed
- Database index verification
- Requires an index led by
starttimeand an index led byendtime, on bothpagesandtt_content. An index over more columns satisfies the check as long as the temporal field is the leading column. The indexes ship with the extension inext_; apply them withtables. sql vendor/bin/typo3 extension:setup. - Extension configuration verification
- The scoping strategy must be
global,per-pageorper-content. The timing strategy must bedynamic,schedulerorhybrid. The harmonization state is reported but never fails the check. - Harmonization configuration verification
- Runs only when harmonization is enabled.
At least one time slot must be configured, every slot must match the
H:MMorHH:MMpattern, and the tolerance must be greater than0and at most86400seconds. The auto-round setting is reported but never fails the check. - Database schema verification
pagesmust carrystarttime,endtime,hidden,deletedandsys_language_uid;tt_contentmust carry those five pluspid. Without--verbosethe command prints a single confirmation line; with--verboseit prints the full field-by-field table.
Examples
vendor/bin/typo3 temporalcache:verify
vendor/bin/typo3 temporalcache:verify --verbose
if vendor/bin/typo3 temporalcache:verify >/dev/null 2>&1; then
echo "Temporal cache system healthy"
else
echo "Temporal cache system reported issues"
fi
temporalcache:list
Lists pages and content elements that carry a start time or an end time.
The command writes nothing.
It exits with 1 when --table, --sort or --format receives a value outside its allowed set,
and with 0 otherwise — including when the result set is empty.
Options
| Option | Short | Value | Default | Description |
|---|---|---|---|---|
--table | -t | required | none | Filter by table; pages or tt_content |
--workspace | -w | required | 0 | Workspace UID to list (0 = live workspace) |
--language | -l | required | 0 | Language UID to list (-1 = all, 0 = default language) |
--upcoming | -u | none | off | Show only content whose start time or end time lies in the future |
--sort | -s | required | uid | Sort by uid, title, starttime, endtime or table |
--format | -f | required | table | Output format; table, json or csv |
--limit | none | required | none | Maximum number of records to output |
Sorting by title or table is case-insensitive.
Sorting by starttime or endtime places records without that field last.
--limit is applied after filtering and sorting; a value of 0 or lower is ignored.
Output formats
table- Human-readable output with a heading, a filter line and a table of table name, UID, title (truncated to 30 characters), start time, end time and the next transition. Warnings about an empty result set are printed in this format only.
json- A pretty-printed JSON array.
Each object carries the keys
table,uid,pid,title,starttime,starttime_formatted,endtime,endtime_formatted,language_uid,workspace_uid,hiddenanddeleted. The raw fields hold Unix timestamps ornull; the_formattedfields holdY-m-d H:i:sstrings ornull. csv-
Comma-separated output with the fixed header line:
Table,UID,PID,Title,StartTime,EndTime,Language,Workspace,Hidden,DeletedCopied!Titles are quoted and inner quotes are doubled. Timestamps are written as
Y-m-d H:i:s, empty when the field is not set.HiddenandDeletedare written as1or0.
In json and csv format an empty result set produces no output at all.
Examples
vendor/bin/typo3 temporalcache:list
vendor/bin/typo3 temporalcache:list --table=pages --upcoming --sort=starttime --limit=10
vendor/bin/typo3 temporalcache:list --format=csv > temporal-content.csv
vendor/bin/typo3 temporalcache:list --format=json > temporal-content.json
temporalcache:harmonize
Rounds starttime and endtime values to the configured time slots, so that fewer distinct transition
timestamps remain and the cache is invalidated less often.
This is the only command that changes data.
Warning
The command writes the new timestamps directly through the database connection, bypassing the DataHandler.
No sys_history entry is created and the change cannot be undone from the backend.
Each write is recorded in the TYPO3 log instead.
Run with --dry-run and take a database backup first.
Options
| Option | Short | Value | Default | Description |
|---|---|---|---|---|
--dry-run | none | none | off | Preview changes without modifying the database |
--workspace | -w | required | 0 | Workspace UID to harmonize (0 = live workspace) |
--language | -l | required | 0 | Language UID to harmonize (0 = default language) |
--table | -t | required | none | Limit to a single table; pages or tt_content |
What the command does
- Aborts with exit code
1when harmonization is disabled in the extension configuration, or when--tablereceives a value other thanpagesortt_content. - Prints the harmonization context: mode, workspace, language, table filter, configured time slots and tolerance.
- Loads the temporal content of the selected workspace and language and applies the table filter.
- Calculates the harmonized timestamp for every start time and end time and collects the records where the
value would change.
With
--verbosethe first ten pending changes are listed with their time shift. - In live mode, asks Proceed with harmonization? — the default answer is no.
No option confirms it up front; running with
--no-interactiontakes the default and writes nothing. - Applies the changes, reports how many records were updated and how many failed, and flushes the
pagescache group. - Prints the impact analysis: number of changes, unique timestamps before and after, and the resulting reduction.
The command exits with 0 in every case after the configuration check has passed — including when nothing
needs harmonizing and when the confirmation is declined.
Individual failed record updates are counted and reported, but do not change the exit code.
Examples
vendor/bin/typo3 temporalcache:harmonize --dry-run
vendor/bin/typo3 temporalcache:harmonize --dry-run --verbose
vendor/bin/typo3 temporalcache:harmonize --table=pages
Next steps
- Configuration — extension configuration reference, including the harmonization slots and tolerance
that
temporalcache:harmonizereads - Backend module — the same data in the TYPO3 backend
- TYPO3 Reports module — status reporting inside the TYPO3 Reports module