Backup Schedule Advisor
Suggests backup frequency based on update volume and data importance.
Function signature
ogAdviseBackupSchedule(metrics = array())
Categories
- Database Integrity
Parameters
metricsBackup-relevant metrics such as change volume, criticality, and recovery objective.Return value
Public-safe status string returned by the function for explicit controller branching or logging.
- success
- message
- data
Compatibility
Existing function name, slug, path, and call order preserved; advertised metadata corrected to the actual source behavior.
Minimum PHP version: 7.4
Security notes
Use caller-owned allowlists and context-specific escaping; validate admin actions, export fields, privacy plans, cache keys, templates, settings, routes, and ecommerce policies before production use.
Code
<?php
/*
* Copyright (c) 2026 Jeffery L. Paris <jparis@phpog.com>.
* Free for personal and internal use. Paid project use requires visible credit
* to Jeffery L. Paris. Corporate use requires a paid license fee unless a
* separate written license states otherwise.
*/
/**
* Suggests backup frequency based on update volume and data importance.
*
* Primary use case: Maintenance dashboards.
* Typical inputs: site activity metrics, data classes.
* Typical output: backup advice.
*
* Implementation note: Advisory only; actual backup process separate.
*
* @param array $metrics Site update and data-importance metrics.
* @return array Backup schedule advice.
*/
function ogAdviseBackupSchedule($metrics = array()) {
$result = array(
'success' => false,
'message' => '',
'data' => array()
);
if (!is_array($metrics)) {
$result['message'] = 'Metrics must be an array.';
return $result;
}
$daily_writes = 0;
if (!empty($metrics['daily_writes'])) {
$daily_writes = (int)$metrics['daily_writes'];
}
$importance = 'normal';
if (!empty($metrics['importance'])) {
$importance = strtolower(trim((string)$metrics['importance']));
}
$database_frequency = 'daily';
$file_frequency = 'weekly';
$retention = '30 days';
if ($daily_writes > 500 || $importance == 'critical') {
$database_frequency = 'hourly snapshots plus daily full backups';
$file_frequency = 'daily';
$retention = '90 days';
} elseif ($daily_writes > 50 || $importance == 'high') {
$database_frequency = 'daily plus pre-deployment backups';
$file_frequency = 'daily';
$retention = '60 days';
}
$result['success'] = true;
$result['message'] = 'Backup schedule advice prepared.';
$result['data'] = array('database' => $database_frequency, 'files' => $file_frequency, 'retention' => $retention);
return $result;
}