PHP – 有什么办法来控制stream程执行?
我有php
和nodejs
安装在我的服务器。 我打电话通过php
使用node canvas
的nodejs
代码
喜欢:
<?php exec(node path/to/the/js/file); ?>
问题:
由于node canvas
,执行的每个进程消耗大约250 Mb的内存。 所以,如果我的服务器有大约8Gb的内存,那么只有32个用户可以在任何时间点使用这个服务,而且如果用户数超过,就有可能导致服务器崩溃。
有什么可扩展的解决scheme来解决这个问题吗?
更新我必须使用Canvas
服务器端,因为我的业务需求,所以我使用node canvas
,但它是沉重的消耗内存,这是一个巨大的问题。
你的问题是,你为每个请求启动一个新的node.js进程,这就是为什么内存占用如此巨大,而不是build立node.js。
但是node.js是为了在一个进程中处理很多不同的请求而build立的,使用它就是你的优势。
我build议你做的只有一个node.js进程开始,并find另一种方式来沟通你的PHP进程和node.js进程。
有很多不同的方法可以做到这一点,比其他人有更多的performance,比其他更难。 所有的优点和缺点,但既然都是networking相关的语言,你可以肯定有支持HTTP请求。
所以你应该做的是一个基本的node.js / Express服务器,可能只有一个API点,它执行已经完成的代码,并返回结果。 这很容易做到(特别是如果你使用JSON在它们之间进行通信),虽然我不知道PHP,但我很确定很容易发送HTTP请求并解释答案。
如果你已经准备好在node.js中挖掘,你可以尝试套接字或MQ,这应该是更高性能的。
这样,你只有一个node.js进程,它不应该在内存中增长,并且处理更多的客户端,不需要使用exec
,而只需要使用Express。