我想要呈现一个同时包含 PHP 标签和 Web2Py 标签的文件。
为此,我希望 Web 服务器通过 Web2Py 传递文件,然后通过 PHP。我找到了一种从通过 Python 进行 Web2py(基于此方法在 django 上运行 PHP),但这种方法会失去 mod_php 或 FastCGI 带来的任何服务器优化的好处,如缓存和多线程操作。每个 PHP 请求都会创建一个新进程,这非常慢。
有没有更好的方法可以在同一个文件中同时使用 Web2Py(Python)和 PHP 标签来有效地呈现页面?注意,我并不是在寻找从同一服务器/域提供仅 PHP 和仅 Web2Py 文件的方法。我更喜欢 Apache2 或 Cherokee 的解决方案。不过,我愿意使用其他 Web 服务器。
背景信息:我更喜欢在 Web2Py 中开发,但我们有这个用 PHP 编写的现有系统。我想用 Web2Py 的一些功能(如 auth 身份验证/用户管理和 T() 国际化对象)来增强 PHP 系统。此外,如果可以分步完成,将 PHP 项目移植到 Web2Py 会容易得多。由于 PHP 项目由许多文件组成,如果它们不需要修改,那将大有帮助。
答案1
解决此问题的最佳方法是分离出旧版 php 位并通过异步 JavaScript 调用加载它们,例如使用 jQuery。配置您的 Web 服务器以通过两个不同的环境处理相同的页面请求可能非常困难,即使您确实让它工作,我猜也会严重降低性能,正如您已经指出的那样。
答案2
CGI 接口(PHP、Python 或任何您使用的接口)接收输入并将其转换为输出。因此,按顺序将一个接口附加到另一个接口应该是可能的。
不幸的是,我无法向您提供任何明确的详细信息。让我们尝试一下:
Apache2s fcgid_module提供CGI。
FcgidInitialEnv PHPRC "/path/to/php/conf"
FcgidWrapper "/path/to/php/php-cgi" .php
这里有两个选择:
- 一个适当的具有 cgi 功能的包装器首先调用一个,然后调用另一个(python 和 php)。
- 该网络服务器允许级联 cgi 包装器或 wsgi 和 cgi。
fcgid 上的文档指出“该指令可以多次使用。”,但我不确定这是否包括为同一个文件后缀调用多个 cgi 脚本。
现在不知道怎么调用python,wsgi也只是一个调用接口而已。