3

Linux Web サーバー上の新しい PHP セッションで、コンソール入力モードでバックグラウンドで実行されているプロセス (具体的には Ghostscript) を開始し、その入力に新しいデータを繰り返し書き込みたいと考えています。このデータ書き込みは、ajax 経由で新しいユーザー データが到着するたびに行う必要があります。ユーザー データは、PHP スクリプトによって Ghostscript の PostScript コマンドに解釈され、gs に送信される必要があります。gs 出力は名前付きファイルになります。これを行う理由は、速度が必要であり、ユーザーからの新しい入力ごとに gs を開始するオーバーヘッドを回避したいからです。(gs を実行して入力を待機すると、データの処理に約 40 ミリ秒かかりますが、gs を再起動してデータを処理するには約 250 ミリ秒かかります。) gs をバックグラウンドで実行してシェルからの入力を受け入れることはできますが、 PHPスクリプトからこれを行うのに苦労しています。私' 考えられる exec、shell_exec、popen、system、coproc などのすべてのバリエーションを試してきましたが、根本的な何かが欠けているようです。洞察をありがとう。

4

1 に答える 1

1

サーバーで適切なアクセス権を持っている場合は、ソケットを開始し、ghostscript がそのソケットからの入力を受け入れるようにすることができます。

例えば

tty で:
$ socket -sl 11555

別の tty で:
$ nc 0 11555 | ghostscript

ソケットに書き込むものは何でも、gs はそれを入力として受け取ります。AJAX 要求がサーバーに到着すると、必要な処理を実行してから、結果の PostScript コマンドを PHP からソケットに書き込むことができます。

于 2012-12-17T13:14:03.243 に答える