2016-03-14 85 views
1

目前,我成功地管理一些PHP守护程序(单实例)与PM2,并且,到目前为止,一切顺利!PM2管理PHP脚本 - 群集模式

随着PM2和同时管理的Node.js/IO.js的应用程序,我可以在集群模式下,没有压力推出他们PM2!所提到的php deamons也不会发生这种情况!

所以,首先,是它甚至有可能来管理使用PM2一个PHP脚本/启动群集实例(或者是PM2功能只对Node.js的/ IO.js脚本可用)?

如果是这样(可能做到),特殊的“优化等”都需要用PM2集群的PHP脚本什么!

在试图推出一些pm2 start xxx.php -i 2 --name XXX,我得到以下错误@错误日志路径:

SyntaxError: Unexpected token < 
    at Module._compile (module.js:439:25) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function._load (/usr/local/lib/node_modules/pm2/node_modules/pmx/lib/transaction.js:62:21) 
    at /usr/local/lib/node_modules/pm2/lib/ProcessContainer.js:200:23 
    at /usr/local/lib/node_modules/pm2/node_modules/async/lib/async.js:52:16 
    at /usr/local/lib/node_modules/pm2/node_modules/async/lib/async.js:1209:30 
    at WriteStream.<anonymous> (/usr/local/lib/node_modules/pm2/lib/Utility.js:126:13) 
    at WriteStream.EventEmitter.emit (events.js:95:17) 

......这让我相信,它甚至不能解析给定的PHP文件!

在此先感谢您的帮助!

回答

0

简短回答:你不能在php中使用集群模式。

的PM2集群模式只适用于JavaScript的。在内部它使用nodejs cluster模块和需要您的脚本(code line)。 这也解释了你的错误,pm2试图用javascript执行php代码(因此是SyntaxError)。

当使用叉模式,它使用您的解释(这里PHP)启动脚本。这就是为什么你也可以在nodejs上运行python或ruby的原因!

+0

是否可以使用PM2运行PHP脚本的多个实例? – maddo7

+0

是的,你可以!如果实例是一个服务器,你必须给它不同的监听端口。 – soyuka

+0

我该怎么做? PHP脚本只是需要在服务器上运行以执行一些后台任务,因此不需要侦听端口。 – maddo7