blob: 094fe50f0592904548d878b613318bace097c6de (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
<?php
const __ROOT__ = __DIR__ . "/..";
require_once __ROOT__ . "/vendor/autoload.php";
require_once __ROOT__ . "/application/i18n.php";
require_once __ROOT__ . "/application/common.php";
function print_error(string $msg): void {
file_put_contents("php://stderr", $msg);
}
function check_sapi(): void {
if (PHP_SAPI !== "cli") {
http_response_code(500);
echo "Error: Can only be called via command line\n";
exit(1);
}
}
check_sapi();
$job = $argv[1] ?? null;
if ($job === null) {
print_error("Error: No job specified\nUsage: php cron.php <job>\n");
exit(1);
}
$jobsDir = __DIR__ . "/jobs";
$availableJobs = array_map(fn($i) => pathinfo($i, PATHINFO_FILENAME), array_values(array_filter(scandir($jobsDir),
fn($i) => is_file($jobsDir . "/" . $i) && $i[0] !== "." && pathinfo($i, PATHINFO_EXTENSION) === "php")));
if (!in_array($job, $availableJobs)) {
print_error("Error: Invalid job specified\nAvailable jobs are:\n" . implode("", array_map(fn($i) => " $i\n", $availableJobs)));
exit(1);
}
$jobFile = $jobsDir . "/" . $job . ".php";
include $jobFile;
|