PHP运行循环不断直到得到=停止

PHP运行循环不断直到得到=停止

问题描述:

我试图打开/关闭Raspberry pi继电器像一个频闪,但我似乎无法停止while循环,页面加载,并且继电器开始脉冲,但我无法阻止它。唯一的方法是停止整个Web服务。PHP运行循环不断直到得到=停止

这里是我的代码:

<?php 
 
if($_GET['type'] == 'switch') { 
 
$output = shell_exec('gpio mode '.$_GET['pin'].' out'); 
 
$output = shell_exec('gpio write '.$_GET['pin'].' '.$_GET['status']); 
 
} 
 

 
if($_GET['type'] == 'blink') { 
 
while(1) { 
 
\t \t $output = shell_exec('gpio write 1 0'); \t 
 
\t \t sleep(0.1); 
 
\t \t $output = shell_exec('gpio write 1 1'); \t 
 
\t \t break; 
 
\t 
 
\t 
 

 

 
\t \t } 
 
} 
 
?>

+1

那么,你需要给它一个条件停下来。你想要什么? X闪烁后? X秒后?后...? – ishegg

+0

我需要它停止,当我发送停止=停止到该PHP页面。我通过移动应用发布到该网址,我需要马达持续脉动,直到Said Stop var发送到页面 – SARUAV

你休息;语句不会停止while循环,它只会从循环中断开,然后再次检查while条件。

我建议给它一个条件,而不是1

while (led == 'on') 
{ 
    //Your code 

    if (when you want it to stop) 
    { 
     led = 'off'; 
    } 

} 

而且,只是个人建议。您的页面永远不会停止,因为代码将始终运行。你可以做的是运行一个控制led的文件。这样,您的页面就可以停止运行,并且可以通过pi上的程序而不是网站上的程序运行。因此,你的代码将检测到“开始”或“停止”变量,如果它被设置,那么它将运行“start_led”程序。

如果您这样做,请务必在启动另一个控件之前终止控制LED的过程。在你的“start_led”程序中,你可以使用ps -aux | grep“start_led”,然后使用kill命令停止该程序的运行。