ytkns/cron.php

54 lines
1.5 KiB
PHP
Raw Normal View History

2020-06-10 16:03:13 +00:00
<?php
namespace YTKNS;
if(!defined('YTKNS_SEM_NAME'))
define('YTKNS_SEM_NAME', 'b');
if(!defined('YTKNS_SFM_PATH'))
define('YTKNS_SFM_PATH', sys_get_temp_dir() . DIRECTORY_SEPARATOR . '{04884071-d334-4388-947a-4fd8c4d4f4ea}');
if(!is_file(YTKNS_SFM_PATH))
touch(YTKNS_SFM_PATH);
$ftok = ftok(YTKNS_SFM_PATH, YTKNS_SEM_NAME);
$semaphore = sem_get($ftok, 1);
if(!sem_acquire($semaphore))
die('Failed to acquire semaphore.' . PHP_EOL);
2021-07-28 22:10:57 +00:00
try {
require_once __DIR__ . '/startup.php';
2020-06-10 16:03:13 +00:00
2021-07-28 22:10:57 +00:00
// Prevent running cron script during maintenance
if(!YTKNS_MAINTENANCE) {
// Destroy old sessions
2025-02-02 20:07:19 +00:00
$ctx->getUsers()->getSessions()->purgeExpiredSessions();
2020-06-10 16:03:13 +00:00
2021-07-28 22:10:57 +00:00
// Resynchronise use counts
Upload::resync(EFFECT_UPLOADS);
2020-06-10 16:03:13 +00:00
2021-07-28 22:10:57 +00:00
// Destroy orphaned uploads
2025-02-02 20:07:19 +00:00
$ctx->getUploads()->purgeOrphans();
2020-06-10 16:03:13 +00:00
2021-07-28 22:10:57 +00:00
// Get task queue
2025-02-02 20:07:19 +00:00
$zones = $ctx->getZones();
$tasks = $zones->getTasks();
$taskQueue = $tasks->queuedTasks();
2020-06-10 16:03:13 +00:00
2021-07-28 22:10:57 +00:00
// Plow through tasks
// TODO: make task functions modular
2025-02-02 20:07:19 +00:00
foreach($taskQueue as $task) {
if(!isset($zoneInfo) || $zoneInfo->getIdStr() !== $task->getZoneId())
$zoneInfo = Zone::byId($task->getZoneId());
2020-06-10 16:03:13 +00:00
2021-07-28 22:10:57 +00:00
switch($task->getName()) {
case 'screenshot':
2025-02-02 20:07:19 +00:00
$zones->takeScreenshot($zoneInfo);
2021-07-28 22:10:57 +00:00
break;
}
2020-06-10 16:03:13 +00:00
2025-02-02 20:07:19 +00:00
$tasks->deleteTask($task);
2021-07-28 22:10:57 +00:00
}
}
} finally {
sem_release($semaphore);
2020-06-10 16:03:13 +00:00
}