Application workflows
Email and Scheduled Spreadsheet Jobs
Deliver generated workbooks through SMTP and run recurring imports or exports through persistent schedules.
emailGeneratedExcel()scheduler()pdoScheduler()runScheduler()Email a generated workbook#
MnbExcel::emailGeneratedExcel(
MnbExcel::report($rows)->withHeader()->autoWidth(),
'manager@example.com',
'Daily sales report',
'The generated report is attached.',
[
'filename' => 'daily-sales.xlsx',
'smtp' => [
'host' => getenv('SMTP_HOST'),
'port' => 587,
'encryption' => 'starttls',
'username' => getenv('SMTP_USERNAME'),
'password' => getenv('SMTP_PASSWORD'),
],
]
);Create a file-backed schedule#
$scheduler = MnbExcel::scheduler(
__DIR__ . '/storage/schedule.json'
);
$scheduler->scheduleExport(
'daily-sales',
'0 6 * * *',
$rows,
__DIR__ . '/storage/exports/daily-sales.xlsx'
);Use PDO schedule storage for shared workers#
$scheduler = MnbExcel::pdoScheduler($pdo, 'mnb_excel_schedule');
MnbExcel::runScheduler($scheduler, [
'sleep_seconds' => 30,
'lock_name' => 'spreadsheet-scheduler',
'stop_on_signal' => true,
]);Run the process under a supervisor#
The library contains scheduling logic and a long-running runner. Use cron, systemd, Supervisor, Docker, or your hosting process manager to keep the runner alive and restart it after failure or deployment.
Was this guide useful?Use GitHub issues for corrections, missing examples, or unclear behavior.
Open an issue