我已经构建了一个获取URL截图的服务。我使用Node和Phantom JS构建了它。
我的节点应用程序的工作原理如下:
这适用于单个请求,没问题。但是,当我在此服务中抛出多个连续请求时,我得到了奇怪的结果。服务收到的每个请求都会生成一个Phantom JS进程并进行屏幕截图,但发送回主网站的API请求中的数据通常不正确。系统会定期从另一个子进程创建的屏幕截图中发回图像URL。
我的预感是,当生成的进程退出时,它会将API请求发送到原始网站,其中包含刚收到的任何数据,而不是刚刚完成的流程数据。
我觉得这应该是一件容易管理的事情,但我还没有找到正确的方法。有没有人有任何提示/技巧来管理使用spawn
创建的子进程,特别是当它们退出时。我想基于这个退出的过程执行另一项任务。
我最初的想法是保留子进程PID的数组以及我拥有的相关数据,并在子进程退出时在此数组中进行查找。这似乎没有解决问题 - 我仍然有不正确的数据被发送回主网站。我想知道我是否正确实现了这一点。我在服务收到的每个API请求上定义了数组,所以考虑一下,它会在每个请求上重新创建......我想。
另一个想法是我应该使用fork
而不是spawn
。我认为这将允许我与子进程通信,但据我所知,我只能使用它来运行JS文件,而不是像Phantom这样的可执行文件。这是对的吗?
我觉得有点像我在这一点上重新发明轮子,但任何提示都会非常感激,谢谢。