我当前面临child_process问题,我找不到出路。
我想使用child_process.spawn()或child_process.exec()在服务器上运行一个简单命令:
let child = spawn('soffice', ['--headless', '--convert-to', 'pdf:writer_pdf_Export', `${UPLOAD_DIR}/${file.bucket}/${file.filename}`, "--outdir", `${UPLOAD_DIR}/${file.bucket}`], { detached: true })
这项任务可以由各种不同的用户每分钟触发多次。
确定,但是应该怎么办?
这将获取任何类型的Office文件(Word,Excel),并将其转换为同一文件夹中的pdf。
一次只能处理一个文件
当我在第一个文件结束之前再次触发它时,就会发生问题,例如:
// File 1 Will be converted fine
let child = spawn('soffice', ['--headless', '--convert-to', 'pdf:writer_pdf_Export', `${UPLOAD_DIR}/${file.bucket}/${file.filename}`, "--outdir", `${UPLOAD_DIR}/${file.bucket}`], { detached: true })
// File 2 will not be converted
let child = spawn('soffice', ['--headless', '--convert-to', 'pdf:writer_pdf_Export', `${UPLOAD_DIR}/${file.bucket}/${file.filename}`, "--outdir", `${UPLOAD_DIR}/${file.bucket}`], { detached: true })
我已经调试了生成器以获取所有输出(stdout,stderr),第一个进程运行良好,但是第二个进程未输出任何内容,但是以代码0(成功)关闭。
我的第一印象是第一个进程也关闭了第二个进程,就好像它们在“冲突”(或者对于CPU只是同一进程。)。
简而言之,我需要一种方法来生成命令的两个单独的实例,以使它们并行且彼此独立地工作。
在此先感谢您的帮助。