Php 为什么我的进程在后台运行时会停止?

Php 为什么我的进程在后台运行时会停止?,php,bash,stdin,centos6.5,Php,Bash,Stdin,Centos6.5,我正在CentOS 6.5和php5.3.3上运行一个简单的PHP脚本 #!/usr/bin/env php <?php echo "hello"."\n"; return 0; ?> 据我所知,这是因为php希望从STDIN获得一些输入。但问题是为什么?正如您所看到的,在这个简单的脚本中不需要任何输入,我在Debian上的php5.4上也没有这种行为。这种行为上的改变是来自php版本还是操作系统? 为什么是这样?有没有办法改变这一点,并允许我在后台运行脚本,而不必

我正在CentOS 6.5和php5.3.3上运行一个简单的PHP脚本

#!/usr/bin/env php
<?php
    echo "hello"."\n";
    return 0;
?>
据我所知,这是因为php希望从STDIN获得一些输入。但问题是为什么?正如您所看到的,在这个简单的脚本中不需要任何输入,我在Debian上的php5.4上也没有这种行为。这种行为上的改变是来自php版本还是操作系统? 为什么是这样?有没有办法改变这一点,并允许我在后台运行脚本,而不必将/dev/null添加为STDIN


谢谢大家!

您的程序除了打印某些内容并以返回0结束外,什么也不做。您确定不是指?。代码执行后,php解释器无需再做任何事情,只需向shell发送信号!我完了!您可以通知用户!使用&调用它只会告诉shell:在后台运行此命令。确实如此。就一次

为了让程序无限期地运行,它实际上也必须无限期地运行

<?php
  while(true) {
    // Doing something useful
    sleep(5);
  }
?>

在这种情况下,使用nohup(php解释器的程序)基本上是禁止终止的,但它不再起什么作用了。至于重定向,它们实际上将以php解释器为目标,它将等待进一步的输入,因为/dev/null不发出任何信息,所以不会出现进一步的输入。

尝试执行类似于./testscript>output.log 2>&1的操作。它应该停止,但至少你可以在它退出之前看到它输出的内容。@hellcode:-1。这就是shell脚本的构造方式。没有shebang,没有./foo.php-type调用。@Mr.Llama:output.log这样是空的。脚本因为STDIN而停止。Related CLI版本是使用readline include:Related构建的:他没有表示希望脚本永远运行。nohup不阻止或禁止程序退出,它防止程序因挂断信号而被终止。他的问题是为什么php在等待输入。他没有要求它这么做。事实上,还有什么其他理由需要输入/输出重定向?也许我根本就不明白这个问题。他指的是他运行这个程序的各种方式,这样它就工作了。为了说明解决他问题的各种方法。。。也就是说,他的脚本似乎在等待stdin,他不知道为什么。@Markus W Mahlberg:正如埃坦所说,我不希望脚本永远运行下去。我可以使用return、exit或nothing,我的问题是一样的:php脚本在做任何事情之前都会停止,它不会回显我的hello。当我说stop时,我的意思是脚本在ps aux中的状态是stopped T,这有点像暂停。我解释过,当为php打开stdin时,它会在原始脚本运行后等待更多的东西。用php试试看
<?php
  while(true) {
    // Doing something useful
    sleep(5);
  }
?>