2012年9月26日 星期三

如何從 node.js 呼叫 php 程式

之前本來打算 系統的定時呼叫(遊戲時間的進程/天氣的變化等)
就用OS內建的工作排程就可以了
OS內建的管理程式
Linux有Crontab
Windows有控制台下的排定的工作
原本系統的更新是寫在system.php
所以就在這裡面把 php system.php 寫進去就好

但是由於目前有node.js所以想說統一就好不用多用其他輔助程式
(雖然說可以把system.php的內容移植寫在node.js也可以 但是懶了)
所以找了一下 有個邪惡的東西Child Process
方法有兩種 spawn 跟 exec
我是直接用後者 這邊有個比較

所以用法超簡單
直接範例code改成這樣就可以 var exec = require("child_process").exec, child;
child = exec("php test.php", function (error, stdout, stderr) {
    console.log('stdout: ' + stdout);
    console.log('stderr: ' + stderr);
    if (error !== null) {
        console.log('exec error: ' + error);
    }
});
console還真的印出結果了 XD

但是有stderr有錯誤訊息
stderr: PHP Warning:  PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_exif.dll'
查了一下是說php_exif.dll必須開啟php_mbstring.dll
但是php.ini卻把php_mbstring.dll放在php_exif.dll後面
所以把php_mbstring.dll放到php_exif.dll前面即可解決
extension=php_mbstring.dll
extension=php_exif.dll

沒有留言:

張貼留言

開放匿名留言 請大家注意網路禮儀