0

我们正在使用 Splunk(一种分析机器数据(如日志文件)的工具)并在 PHP 中有一个应用程序。对于某些数据,我们需要在 php(基于 CLI)中调用我们的应用程序。不幸的是,Splunk 只支持 Python 调用。
有没有一种简单的方法可以使用相同的参数对 1:1“转发/调用”php 并返回输出,如“passthru”。我只找到了所谓的子进程模块的部分解决方案,但我的 python 经验为零,所以无法让它工作。

例如,splunk 调用:
python external_lookup.py argument1 argument2 argument3
- 然后 python 脚本应该调用(使用给 python 的 CLI 参数):
php external_lookup.php argument1 argument2 argument3
- 然后 php 写入它的输出
- Python 捕获该输出并自己输出

非常感谢任何帮助,或者更好的工作示例脚本。

在此先感谢,
文斯

4

2 回答 2

1

Popen从子流程模块使用:

import sys
from subprocess import Popen
output = subprocess.Popen(['php', 'path/to/script.php'] + sys.argv[1:], stdout=subprocess.PIPE).communicate()[0]

sys.argv[1:]包含除了 python 脚本本身的名称之外的所有命令行参数。

于 2012-09-21T18:43:32.313 回答
0

使用subprocess.call

import sys, subprocess
sys.exit(subprocess.call(['php', sys.argv[0].replace('.py', '.php')] + sys.argv[1:]))

编辑:使 Python 脚本返回 PHP 脚本返回的值。

于 2012-09-21T18:58:36.793 回答