Всем спасибо за ответы.) Всё получилось с планировщиком задач в ларе и винде. Может кому пригодится, опишу подробней:
В бд создать таблицу с задачами (id, date_end с индексом - не позже этого времени нужно выполнить эту задачу, type - тип задачи, и пр.).
В app/Console/Kernel.php создала artisan команду, вызывается ежеминутно
...
protected $commands = [
'App\Console\Commands\DateTasksUsers'
];
protected function schedule(Schedule $schedule)
{
$schedule->command('date_tasks:users')->everyMinute();
}
...
В app/Console/Commands/DateTasksUsers.php - файл для команды. В ней проходим таблицу задач, ищем те, время которых уже подошло. Для каждой полученной задачи вызываем соответствующую функцию.
...
protected $signature = 'date_tasks:users';
...
public function handle()
{
$tasks = TaskUser::where('date_end', '<=', time())
->get();
if (!is_null($tasks)) {
foreach($tasks as $task)
{
if ($task->type == 1)
User::task_change($task); // там уже проверяем данные, обновляем данные в бд, уведомление кидаем
// юзеру и т.д. Там же в конце удаляем эту задачу.
elseif ($task->type == 2)
Item::task_upgrade($task);
// дальше так же добавлять новые типы задач и вызов соответствующих ф-й для них
}
}
}
Настроить планировщик винды (у меня 10ка) как в
статье (там для xampp как раз показано), которую скинул
Barmunk.
Вот и все манипуляции)
Смущает только то, что задачи выполняются последовательно, а надо бы запустить их все разом параллельно, т.е. в несколько процессов.