サーバーのバックグラウンドで Ruby スクリプトを開始するために必要な PHP コードがいくつかあります。しかし、スクリプトは機能したくありません。現時点でスクリプトが行うことは、入力を取得してエコー バックすることだけです。
私はそれを次のように呼び出します:
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 が起動すると、最初の入力を永遠に待ちます。これを回避する方法がわかりません!