Php exec python脚本'弱点'/缺点

时间:2013-12-26 09:26:40

标签: php python cgi

使用php执行python脚本有什么不好的地方?

另外,它与通过cgi方法执行python有什么不同

我从Running python script from php找到了一个有趣的方法,我认为只使用

会很棒
exec("python ../cgi-bin/form.py");

和密切相关的方法。

请正确解释并告诉我使用此方法时必须注意的事项。

1 个答案:

答案 0 :(得分:1)

你的问题很常见 - 一般而言,它不是关于执行 python 脚本 - 而是执行一些外部命令。要做到这一点,你需要满足一些条件:

  • 通常,PHP由Web服务器运行。因此,要执行某些脚本,Web服务器必须能够执行此操作。这意味着 - 启动了Web服务器的 OS用户必须具有足够的权限才能执行外部命令
  • 在许多情况下,外部执行功能(如exec()system())被视为不安全 - 因此,在常见情况下会被禁用(我说的是托管)。因此,依赖这些功能将使您的应用程序的技术要求更加严格 - 而且您将无法使用此类主机。

除了上面描述的,PHP脚本将“挂起”,直到完整数据从exec()传递回脚本。这意味着执行速度慢,响应时间低。而且,在Win系统执行外部脚本is included到总脚本执行时间(与* nix系统不同) - 因此,如果外部脚本太长,您可能很有可能捕获时间限制错误回应。

如果你想用CGI启动python脚本进行一些“比较” - 那么你应该选择CGI。至少是因为它的目的是为了这个目的。使用CGI启动python脚本肯定会在速度方面获胜 - 因为启动PHP脚本没有任何开销(例如,如果你只想使用python,你可以禁用PHP支持)。通常情况下的权限级别不会成为问题,因为在结束时,可执行文件将从Web服务器用户启动,因此,在两种情况下它们都是相同的。而且,正如我上面提到的,通过CGI启动不会将您绑定到PHP的时间限制 - 您不会关心PHP中发生的事情。

所以主要的想法是 - 是的,这是一种推出方式。但不是 - 如果你可以通过CGI发布本地做到这一点,那不是你应该做的事情。