コマンドの入力ファイルストリーム

コマンドの入力ファイルストリーム

このコマンドにファイルの代わりにファイルストリームを送信するにはどうすればよいですか?

/usr/local/bin/wkhtmltopdf --title "$SUBJECT" -q $SOURCEFILE $OUTPUTFILE

ファイルストリームはPHPの文字列から来ます。

答え1

/dev/stdinPHPを使用してこれを行うことができるはずです。proc_open()。次のコマンドを使用してプロセスを開始します。

wkhtmltopdf --title "$SUBJECT" -q /dev/stdin $OUTPUTFILE

そして変数のHTMLを実行中のプロセスにパイプします。

答え2

パイプから読み取った名前でファイルを開くプログラムを作成するには、特別なデバイス名を指定します/dev/stdin。たとえば、次のようになります。

/usr/local/bin/program-to-output-the-html | /usr/local/bin/wkhtmltopdf --title "$SUBJECT" -q /dev/stdin $OUTPUTFILE

または、表示されるコマンドの前にこれを行います。

SOURCEFILE=/dev/stdin

そうすることで、プログラムはopen("/dev/stdin",...)これを防ぐための論理的な意図がない限りそうします。

答え3

コメントを見ると、一時ファイルを使用してこれを行うことができるようです。名前付きパイプを作ってみてはいかがでしょうか?

 mknod magritte p

PHPコードからMagritteに書き込むだけです。

wkhtmltopdfを実行する必要があります。

/usr/local/bin/wkhtmltopdf --title "$SUBJECT" -q magritte $OUTPUTFILE

より正確に位置を指定できます。

まだ推測中です。 wkhtmltopdfはPHPで動作しますか?

その場合は、バックグラウンドプロセスとして実行する必要があります。PHP実行機能

exec はパイプに書き込む前に呼び出されます。

答え4

だから正しい使い方はプロセスの交換

wkhtmltopdf --title "$SUBJECT" -q <(command_with_output_stream) $OUTPUTFILE

関連情報