2011-02-04 139 views
3

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

+1

您是否有权访问Apache配置(或您正在使用的Web服务器)? – MeanEYE 2011-02-04 14:02:32

+0

是的,我在我自己的专用服务器上安装了Apache。 – Jon 2011-02-04 15:34:47

回答

1

首先,你可以在Python或PHP中做到这一切吗?使用多种语言通常被视为反模式。这并不是说这总是一个糟糕的主意,但是你应该首先质疑,为什么只有这样,如果你确信这是一个好主意,才能继续前进。

至于你想做什么细节,有几个选项:

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

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

    virtual('path/to/python.py?'.$query); 
    
  2. 写自己的PHP WSGI网关。基本上,将WSGI规范编码到一个库中,并从PHP内部明确地调用该WSGI规范。

  3. 坚持呼吁它从exec()(这可能是现在的最佳选择)。

你必须考虑的是,跨语言之间包含固有的开销。你永远无法克服,这只是野兽的本质。相反,我建议将整个请求保留在一个环境中,并在整个环境中处理它...

相关问题