2016-05-24 101 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")