PHP - 有没有办法控制流程执行?

时间:2017-04-03 10:31:07

标签: php node.js process node-canvas

我的服务器中安装了phpnodejs。我正在调用nodejs代码,该代码通过node canvas

使用php

喜欢:

<?php 
    exec(node path/to/the/js/file);
?>

问题:

由于node canvas,此执行的每个进程都会消耗 250 Mb 的内存。因此,如果我的服务器具有 8Gb 的内存,则只有 32 用户可以在任何给定的时间点使用该服务,并且如果数量存在,则存在服务器崩溃的风险用户超过。

这个问题是否有可扩展的解决方案?

更新由于我的业务需求,我必须使用Canvas服务器端,所以我使用的是node canvas,但它占用了大量内存问题

1 个答案:

答案 0 :(得分:1)

您的问题是您为每个请求启动了一个新的node.js进程,这就是为什么内存占用空间如此巨大,并且不是为什么构建node.js。
但是node.js是为了在一个进程中处理大量不同的请求而构建的,使用它对您有利。

我建议你做的是只启动一个node.js进程,并找到另一种在PHP进程和node.js进程之间进行通信的方法。

有一种很多有不同的方法可以做到这一点,有些方法比其他方法更有效,有些方法比其他更难建。所有这些都有利有弊,但由于两者都是与Web相关的语言,因此您可以确定HTTP请求都支持。

所以你应该做的是一个基本的node.js / Express服务器,可能只有一个API点,它执行你已经完成的代码,然后返回结果。这很容易做到(特别是如果你使用JSON在它们之间进行通信),虽然我不了解PHP,但我很确定发送HTTP请求并解释答案很容易。

如果您准备深入了解node.js,您可以尝试套接字或MQ,这应该更高效。

这样,你只有一个node.js进程,它不应该在内存中增长并处理更多客户端,不必使用exec,并且首先尝试使用Express。