如何通过使用WSGI执行Python脚本来避免PHP exec()的使用?

3

目前我正在使用exec()从PHP启动一个Python脚本,因为我必须将一些动态变量从网站/MySQL传递到命令行。但是,我想改进这个操作的速度和安全性,所以我考虑使用WSGI。我在想,是否可能将Python脚本嵌入到WSGI文件中,该文件将直接(或间接)使用从PHP传递的变量...但是我该如何做呢?我从未使用过WSGI,所以我甚至不知道这是否是一个愚蠢的问题 :)


1
你有访问 Apache 配置文件的权限吗?(或者你正在使用的任何 Web 服务器)? - MeanEYE
是的,我在自己的专用服务器上安装了Apache。 - Jon
1个回答

1

首先,你能用Python或PHP完成所有工作吗?通常使用多种语言被认为是反模式。这并不意味着它总是一个坏主意,但你应该先问自己为什么,只有当你确信这是一个好主意时才继续。

关于你想要实现的具体内容,有几个选择:

  1. 如果使用Apache,您可以使用virtual()函数通过Apache发起新请求。

    这是假设您使用mod_php和mod_wsgi。基本上,您需要为要传递的变量构建查询字符串,并像下面这样调用它:

    virtual('path/to/python.py?'.$query);
    
  2. 编写自己的PHP WSGI网关。

    基本上,将WSGI规范编码到库中,并在PHP内显式调用它。

  3. 坚持从exec()调用它(现在可能是最好的选择)。

你需要考虑的是,在不同编程语言之间进行交叉包含时会有一定的开销。这是无法避免的,这就是事物的本质。因此,我建议您将整个请求保留在一个环境中,并在该环境中完全处理它...

不幸的是,我不能放弃任何一种语言,因为我使用了一些在PHP上不可用的Python库...而将整个PHP重写为Python...我不确定这是否值得努力。我希望能使用WSGI来缩减这种开销,以便找到捷径。 - Jon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接