node.js 无法直接调用 php 函数,必须通过 ipc 协作:常用 child_process.spawn 启动 cli 脚本(需可执行权限、json 输出);高并发宜用长连接子进程池或 http 桥接(php -s);须严控输出、编码、错误码与超时,否则生产环境易崩溃。
Node.js 无法直接调用 PHP 函数,因为两者运行在完全隔离的运行时环境中,没有共享内存或原生函数导出机制。必须通过进程间通信(IPC)间接协作。
用 child_process.spawn 启动 PHP CLI 脚本最常用
这是最轻量、低延迟的方式,适合短时任务(如数据校验、模板渲染、调用已有 PHP 工具类)。
- PHP 脚本必须以
#!/usr/bin/env php开头或显式用php命令执行,且需有可执行权限(chmod +x) - 参数通过
argv传入,结果建议用echo json_encode($result)输出,Node.js 用stdout.on('data')接收并JSON.parse - 错误不要只依赖
stderr:PHP 脚本里需主动exit(1),Node.js 监听close事件的code和signal判断是否异常退出 - 避免在循环中频繁 spawn:PHP 解释器启动开销大,可改用长生命周期子进程 + STDIN/STDOUT 流式通信,或加进程池(如
worker_threads管理多个php实例)
HTTP 桥接(PHP 启 HTTP Server)适合复杂逻辑或需状态保持场景
当 PHP 侧需要 Session、数据库连接复用、或已有 Web API 时,比子进程更合理。