我有一些 PHP 代码需要在服务器的后台启动一个 ruby 脚本。但是脚本不想工作。脚本现在所做的就是获取输入并将其回显。
我这样调用它:
shell_exec("./fifo_test.r < input.fifo > buffer &");
这会导致 PHP 无限期挂起。但是当我直接运行它时它工作正常。
root@ip-xxxxx:/var/www/test# su www-data
$ sh -c ./fifo_test.r < input.fifo > buffer &
$ echo test > input.fifo
$ cat buffer
Got: test
以下是过程信息:
ubuntu@ip-xxxxx:~$ ps -ef | grep fifo
www-data 1076 1 0 00:39 ? 00:00:00 sh -c ./fifo_test.r < input.fifo > buffer &
有什么想法吗?谢谢!
编辑:我可以通过手动添加到 input.fifo 来解冻 PHP。然后它工作正常。但是当 PHP 启动它时,它会永远等待第一个输入。我不知道如何避免这种情况!