【问题标题】:How to stop python script when run it from Website (php)从网站(php)运行python脚本时如何停止它
【发布时间】:2016-05-24 18:47:12
【问题描述】:

我的项目是 Rasp Pi 上的照明控制 通过使用 Rasp Pi 作为 Web 服务器并通过 python 脚本控制灯光 我使用 PHP 网站上的 UI 来控制灯光

这是我的 php 代码

<?php
    public function auto1()
    {   
        system('sudo -u root -S python /var/www/4led/chktime1.py');
    }

    public function disauto1()
    {   
        system('echo raspberry | sudo -u root -S pkill -f chktime1.py');
    }
?>

当我按下网站上的 on 按钮打开自动脚本时,它调用 auto1 并正常工作,但这是循环脚本(我打算让它一直循环)但是当我按下 off 按钮时,它无法关闭它,因为chktime1.py 的循环仍在工作,无法在 disauto1 中打开其他脚本或命令。如何从 PHP 命令停止此脚本。

感谢您的帮助

【问题讨论】:

  • 即使请求被中止,你也不能保证 python 脚本会被停止。您无法控制外部。
  • 为什么这个问题被标记为codeigniter?已编辑。
  • @LuisMasuelli 对不起,我的代码很糟糕,我无法编写比此脚本更智能的代码。此脚本将每 10 分钟自动检查一次数据库中的时间。如果当前时间与数据库时间同时,灯会打开。我从 putty 尝试它可以通过“ctrl + c”中断或使用来自其他终端的命令“echo raspberry | sudo -u root -S pkill -f chktime1.py”它工作得很好。但我想知道如何在同一个终端中退出脚本仍然循环,你能知道停止这个脚本的另一种方法吗?
  • @Sparky 因为我在这个网站上使用 Codeigniter 框架
  • 你的代码不差,但与答案无关。即使是最聪明的 php 代码也无法保证你想要什么

标签: php python linux raspberry-pi


【解决方案1】:

不确定您的问题是否已解决,但可能对其他人有所帮助。 您可以在 PHP 中触摸一个文件并检查您的 chktime1.py 文件是否存在。

<form action="" method="post">
     <input type="submit" name="start" value="start" />
     <input type="submit" name="stop" value="stop" />
</form>

<?php
    if(isset($_POST['start'])){
        system('sudo -u root -S python /var/www/4led/chktime1.py');
    }
    if(isset($_POST['stop'])){
        system('sudo -u root -S touch /var/www/4led/stop-script');
    }
?>

您可以将其添加到您的 Python 中

import os, sys

while(true): 
   #your code
   if(os.path.isfile('/var/www/4led/stop-script')):
      break

os.system("sudo -u root -S rm /var/www/4led/stop-script")

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多