php - 如何在 Linux 系统上用 PHP 启动后台进程并将用户 ajax 输入重复写入其标准输入

标签 php background ghostscript

在 Linux Web 服务器上的新 PHP session 中,我想启动一个进程(特别是 ghostscript)以控制台输入模式在后台运行,然后重复将新数据写入其输入。每次新用户数据通过 ajax 到达时都需要进行此数据写入。用户数据被PHP脚本解释成ghostscript的postscript命令,然后需要发送给gs。 gs 输出将是一个命名文件。这样做的原因是我需要速度并且希望避免在用户的每个新输入上启动 gs 的开销。 (一旦 gs 运行并等待输入,处理我的数据大约需要 40 毫秒,但重新启动 gs 并处理数据大约需要 250 毫秒。)虽然我可以让 gs 在后台运行并接受来自 shell 的输入,但我很难让它从 PHP 脚本执行此操作。我已经经历了我能想到的 exec、shell_exec、popen、system、coproc 等的所有变体,但我似乎遗漏了一些基本的东西。感谢您提供任何见解。

最佳答案

如果您对服务器有适当的访问权限,可以启动一个套接字并使 ghostscript 接受来自该套接字的输入。

例如

在 tty 上:
$套接字-sl 11555

在另一个终端上:
$ NC 0 11555 |幽灵脚本

现在无论您向套接字写入什么,gs 都会将其作为输入接收。当您的 AJAX 请求到达服务器时,您可以进行任何需要的处理,然后将生成的 postscript 命令从 PHP 写入套接字。

关于php - 如何在 Linux 系统上用 PHP 启动后台进程并将用户 ajax 输入重复写入其标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13676792/

相关文章:

php - 如何使用php从youtube提取视频的描述

php - 无法将此元素宽度设置为 100%

html - 从另一个 div 的边缘扩展背景图像以填充屏幕的剩余宽度

pdf - 使用 GhostScript/GhostPDL 将 SVG 转换为 PDF?

php - 使用 PHP 从文件和目录数组中删除文件

php - MySQL 日期不带秒

android - 更新背景边界

javascript - 尝试使用 jquery 编辑背景图像,解释字符串错误

ruby - 修复不可读的 ghostscript 字体

pdf - 用图像标记pdf