2016-05-24 124 views
1

我的项目是Rasp Pi上的照明控制 通过使用Rasp Pi作为Web服务器&通过python脚本控制灯 我使用PHP网站上的UI来控制光如何停止python脚本运行时从网站(php)

这里是我的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'); 
    } 
?> 

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

谢谢您的帮助

+1

即使当一个请求被中止,你有没有保证,Python脚本将被暂停。你没有外在的控制。 –

+0

为什么这个问题用[tag:codeIgniter]标记?编辑。 – Sparky

+0

@LuisMasuelli对不起,我可怜的代码,我不能做出比这个脚本更聪明的代码。这个脚本会自动检查数据库每10分钟的时间。如果当前时间与数据库时间同时光照会打开。我尝试使用putty它可以通过“ctrl + c”或使用来自其他终端的命令“echo raspberry | sudo -u root -S pkill -f chktime1.py”中断它工作得很好。但是我想知道如何在同一个终端上退出脚本,但仍然可以通过循环来知道停止脚本的另一种方式。 –

回答

0

不知道你的问题就解决了,但也许它可以帮助别人。 你可以用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/4led/stop-script")