이 명령에 파일 대신 파일 스트림을 보내려면 어떻게 해야 합니까?
/usr/local/bin/wkhtmltopdf --title "$SUBJECT" -q $SOURCEFILE $OUTPUTFILE
파일 스트림은 PHP의 문자열에서 나옵니다.
답변1
/dev/stdin
PHP를 사용하여 이 작업을 수행 할 수 있어야 합니다.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