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

时间:2011-02-04 13:43:25

标签: php python wsgi

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

1 个答案:

答案 0 :(得分:1)

首先,您可以在Python或PHP中完成所有操作吗?使用多种语言通常被视为反模式。这并不是说这总是一个坏主意,但你应该首先质疑为什么,只有这样你才能确信这是一个好主意。

就你想做什么的具体情况而言,有几个选择:

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

    这假设您正在使用mod_php和mod_wsgi。基本上,您需要为要传递的变量构建查询字符串,并将其命名为:

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

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

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

  4. 你必须考虑的是,语言之间的交叉包含固有的开销。你永远不会克服它,这只是野兽的本性。所以相反,我建议将整个请求保留在一个环境中,并在该环境中完整地处理它......