Вот пример, в котором дата последнего игрока сохраняется в файле
<?php
$filename = 'data.txt';
$now = new DateTime;
// Чтение содержимого файла
$lastPlayerDatetime = @file_get_contents($filename);
if ($lastPlayerDatetime === false) {
// Если в файле ничего нет, то нужно записать в него текущую дату
file_put_contents($filename, $now->format(DATE_ATOM));
echo 'Вход в игру открыт. Вы можете зарегистрироваться!', PHP_EOL;
return;
}
// Если есть, то нужно сравнить текущую дату с датой из файла, проверив разницу между ними
$fileDatetime = new DateTime($lastPlayerDatetime);
$diff = $fileDatetime->diff($now);
// Если разница больше или равна 30 минутам, то запрещаем регистрацию
$minutes = $diff->format('%i');
if ($minutes >= 30) {
echo 'Вход в игру закрыт. Увы, зарегистрироваться уже нельзя!', PHP_EOL;
return;
}
// Всё открыто. Можно пускать. Также надо записать новую дату в файл
echo 'Вход в игру открыт. Регистрируйтесь на здоровье!', PHP_EOL;
file_put_contents($filename, $now->format(DATE_ATOM));
Аналогичный вариант можно реализовать с БД