【问题标题】:Calling a Python program from PHP从 PHP 调用 Python 程序
【发布时间】:2010-06-24 23:03:10
【问题描述】:

我有一个 A* 算法版本,它可以构建 Python 列表中的英国道路和自行车网络。大约需要 30 秒 初始化,但一旦完成可以很快找到最短的路线 任意两个顶点之间。提供了开始和结束顶点 ID 通过 PHP。

我正在尝试找出最佳的沟通方式 PHP 和 Python 程序。我只想做初始化阶段 当 Apache 服务器启动时,我的问题是:我如何保持 python程序活着并通过php从它请求路由?我有一个 GLAMP 设置。

【问题讨论】:

  • @Pekka 可能是 GNU/Linux 而不仅仅是 Linux,因为 GNU/Linux 是具有 Linux 内核和 GNU 子系统的操作系统的技术正确名称。
  • @Bryan 啊,干杯。 @Simon 这是您正在那里构建的一个令人印象深刻的系统! 。您为此使用什么样的数据?在可以想象的未来会有科隆地区的版本吗? :)
  • 请,请,请。使用搜索。
  • Calling Python in PHP的可能重复

标签: php python ipc


【解决方案1】:

我能想到的最简单的方法是 XMLRPC。 Python 使设置 XMLRPC 服务器变得非常容易,并且在 PHP 端有 php_xmlrpc 用于绑定......

def calculate_path(v1, v2):
  return [v1, ..., v2]

from SimpleXMLRPCServer import SimpleXMLRPCServer
server = SimpleXMLRPCServer(('localhost', 9393))
server.register_function(calculate_path)
server.serve_forever()

并且您正在运行并且应该能够从您的 PHP 应用程序对 calculate_path 上的 http://localhost:9393/ 进行 XMLRPC 调用。

【讨论】:

  • 感谢您提供的所有解决方案,但我最终选择了这个,因为它看起来最简单。然而,我确实花了很长时间才让 Pear 模块与 PHP5.3 一起工作,我通过预定义 function dl() {return false;} 来做到这一点,我们现在已经剥离了大部分 XMLRPC 包,以便拥有一个非常轻量级版本。
【解决方案2】:

看看这个问题:Calling Python in PHP

还可以查看此扩展程序:http://www.csh.rit.edu/~jon/projects/pip/

我不知道您的托管环境是否允许您添加新的 php 扩展,但您明白了。

【讨论】:

    【解决方案3】:

    我会从您的 Python 应用程序中创建一个“后端”服务器。有很多方法可以调用 Python 应用程序:

    这避免了 Python 应用程序的任何启动损失。

    【讨论】:

      【解决方案4】:

      您可以使用 web.py 在 Python 中做一些简单的 REST Web 服务器:

      http://webpy.org/

      然后通过 PHP 调用它,应该会让整个任务变得超级简单。

      查看更多信息:

      http://johnpaulett.com/2008/09/20/getting-restful-with-webpy/

      【讨论】:

        猜你喜欢
        • 2011-02-24
        • 2017-05-14
        • 2013-05-30
        • 1970-01-01
        • 2012-07-31
        • 2012-03-17
        • 2018-07-03
        • 2015-06-03
        • 1970-01-01
        相关资源
        最近更新 更多