PHP连续运行循环,直到get = stop

时间:2017-08-29 21:07:36

标签: php shell

我正试图像一个频闪一样打开/关闭Raspberry pi继电器,但我似乎无法停止while循环,页面加载,继电器开始脉冲,但我无法阻止它。唯一的办法就是停止整个网络服务。

这是我的代码:

 <?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) {
		 $output = shell_exec('gpio write 1 0');	
		 sleep(0.1);
		 $output = shell_exec('gpio write 1 1');	
		 break;
	
	


		 }
}
?>

1 个答案:

答案 0 :(得分:0)

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

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

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

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

}

另外,只是个人推荐。您的页面永远不会停止,因为代码将始终运行。你可以做的是运行一个控制led的文件。通过这种方式,您的页面可以停止运行,并且通过pi而非网站上的程序可以运行led。因此,您的代码将检测&#34; start&#34;或者&#34;停止&#34;变量,如果设置了,那么它将运行&#34; start_led&#34;程序

如果这样做,请确保在启动另一个进程之前终止控制该进程的进程。在你的&#34; start_led&#34;程序,你可以只是ps -aux | grep&#34; start_led&#34;然后使用kill命令阻止该程序运行。

相关问题