Как запустить событие в PHP в то время, которое определяет пользователь веб-сайта

#php #html #apache #datetime #raspberry-pi

#php #HTML #apache #дата и время #raspberry-pi

Вопрос:

У меня настроен сервер, который при посещении HTTP-ссылки включает и выключает свет в моем доме. Я хочу создать веб-сайт, который позволит вам планировать, когда это произойдет. Я запускаю этот веб-сайт на Raspberry Pi с Apache. Мой вопрос в том, как я могу запрограммировать Raspberry pi, чтобы он получал информацию о том, в какое время посещать HTTP-ссылку и включать свет с веб-сайта. Я не знаю, делается ли это на веб-сайте через PHP или на сервере через python или что-то еще. Любая помощь будет с благодарностью. Пока это код.

 <!DOCTYPE html> 
<html> 
<head> </head> 
 <body style="text-align:center;"> 
    <?php   
        if(isset($_POST['button2'])) { 
            $command = escapeshellcmd('wget http://192.168.1.128:49949/Test1');
        $output = shell_exec($command);
        echo $output;
        } 
    ?> 
    
    <form method="post"> 
<input type="submit" name="button2"
                value="Toggle"/> 
    </form> 
</head> 
</html>   

Комментарии:

1. Вы хотите запустить его один раз или запланировать?

2. Кроме того, как пользователь указывает время для запуска события?

3. Я хочу выбрать это время на веб-сайте, скажем, пользователь вводит 12 часов утра ежедневно, а сервер отправляет http-запрос в 12 часов утра каждый день

4. Эта проблема слишком сложна, чтобы быть отдельным вопросом в SO. В PHP нет длительного процесса выполнения запланированного задания. Вам нужно объединить cron с некоторой библиотекой планировщика , чтобы регулярно запускать что-либо.

5. И перед этим вам нужен какой-то способ сохранить отправленное задание. Я считаю, что лучше всего использовать базу данных для постоянного хранения (например, SQLite через PDO , MariaDB / MySQL через PDO . Или вам придется реализовать свой собственный формат хранения с помощью fwrite и fread .

Ответ №1:

Это слишком сложно для одного вопроса SO. Я бы разбил на 3 части, чтобы ответить:

Как получать и сохранять расписание пользователя?

Сначала вам понадобится HTML-форма, в которой пользователь может указать время для запуска команды. Сложная часть заключается в том, чтобы как-то сохранить запланированное задание. В PHP нет длительного процесса планирования заданий. Вам нужно немного на постоянное хранилище.

Например,

  1. SQLite через PDO
  2. MariaDB / MySQL через PDO.
  3. Использование CSV через fputcsv и fgetcsv
  4. Реализуйте свой собственный формат хранения с помощью fwrite и fread.

Как запустить запланированное задание?

Как указывалось ранее, в PHP нет длительного процесса выполнения запланированного задания. В системе Linux есть cron для регулярного запуска. Вы можете запланировать его для регулярного запуска PHP-скрипта. Затем в PHP-скрипте вы можете реализовать логику для фактического запуска сохраненного задания расписания.

Вы можете использовать некоторую библиотеку планировщика, чтобы помочь вам в этом.