При нажатии кнопки вызывается страница PHP, которая, в свою очередь, выполняет команду shell_exec (), которая запускает скрипт python. Проблема в том, что запуск сценария python займет почти 30 минут, а браузер будет работать до тех пор, пока сценарий фактически не завершится. Итак, есть ли способ, чтобы при запуске команды shell_exec она возвращалась обратно, тогда как скрипт python запускается в фоновом режиме?
if(isset($_POST['fire_automation_now'])){
$cmd = "python schedule_php.py now";
shell_exec($cmd);
header('location:index.php');
}
Теперь он не перенаправляет на index.php до тех пор, пока не закончится сценарий python, который запланирован на 30 минут.
В настоящее время я просто создаю текстовый файл с задержкой 300 с, чтобы имитировать ожидание в сценарии.
HTML
<form action="fire_automation.php" method="POST">
<div class=" row">
<div class="col-md-6">
<button type="submit" name="fire_automation_now" class="btn btn-large btn-success">Run Now</button>
</div>
</div>
</form>
PHP
<?php
if(isset($_POST['fire_automation_now'])){
$cmd = "python schedule_php.py now";
shell_exec($cmd);
header('location:index.php');
}?>
ПИТОН
import time
def now():
time.sleep(300)
open("test.txt", "w")
def main(choice):
if choice == "now":
now()
if __name__ == '__main__':
main(sys.argv[1])
Спасибо.