1. CLI Mode
You can run CLI commands to execute a PHP script. You can pass data to the PHP script by sending the $_ENV variable. Example:
var spawn = require('child_process').spawn; var php = spawn('/usr/bin/php',['/path/to/php/script.php'], { env: { foo: 'bar' } }); php.stdout.on('data', function(data) { console.log(data.toString()); });
In your PHP script, you can get the data by $_ENV variable
2. Use PHP-FPM
PHP-FPM is a fastcgi process manager of PHP. Fastcgi is a standard communication protocol. So we can use PHP to connect to a port, then send php script information, then PHP-FPM will run the script for you.
I've created a NPM module `node-phpfpm` to connect PHP-FPM server
var PHP = require('node-phpfpm'); var php = new PHP({ host:'127.0.0.1', port:9000 }); php.run('test.php', function(err, output, errors) { console.log(output); }
Checkout more information of this module: https://github.com/longbill/node-phpfpm
Why do we need PHP-FPM?
Because starting a php process by CLI mode is a really heavy CPU operation. From my test results, it can only run 30 PHP scripts at the same time on my Macbook Pro.
But with PHP-FPM, the number of scripts executing at the same time rise to 600 !
-- END --