繁体   English   中英

PHP和Python之间的通信

[英]Communication between PHP and Python

我正在尝试为一些python脚本构建一个Web界面。 问题是我必须使用PHP(而不是CGI),我执行的一些脚本需要相当长的时间才能完成:5-10分钟。 PHP是否可以与脚本通信并显示某种进度状态? 这应该允许用户在任务运行时使用网页并在此期间显示某些状态,或者只在完成时显示消息。

目前使用exec()并在完成时我处理输出。 服务器在Windows机器上运行,因此pcntl_fork将无法运行。

稍后编辑 :使用另一个PHP脚本使用ajax提供主页信息似乎不起作用,因为服务器杀死它(它达到最大执行时间,我真的不想增加它,除非必要)

我正在考虑基于套接字的通信,但我不知道在我的情况下这有什么用处(一些提示,也许?

谢谢

您需要进程间通信 插座是第一个浮现在脑海中的东西; 你需要设置一个套接字来监听 PHP中的连接(在同一台机器上),并设置一个套接字连接到Python中的监听套接字并将其状态发送给它。

从Python文档和Python socket模块的文档(特别是最后的示例)中查看此套接字编程概述 我确信PHP有类似的资源。

一旦您对要构建的内容有了更具体的了解并需要帮助,请随意在StackOverflow上提出一个问题(如果尚未回答)。

我认为你必须使用元刷新,并且可能让python将状态写入文件,然后从中读取php。

您也可以使用AJAX使其更具动态性。

此外,可能不应该使用exec()......这会打开一个漏洞世界。

您可以使用像Gearman这样的排队服务,PHP中的客户端和Python中的工作者,反之亦然。

有人在这里创建了一个示例设置。

https://github.com/dbaltas/gearman-python-worker

不幸的是我的朋友,我相信你需要按照你的要求使用套接字。 :(我没有使用它们的经验,但是这个关于套接字/网络编程的Python教程可能会帮助你获得所需的Python套接字交互。(Beau Martinez的链接似乎也很有希望。)

您还需要获得一些PHP套接字连接,以便它可以请求状态。

接下来,我的想法是你的Python脚本可能会在循环中运行。 因此,我会在该循环的一部分开头放置“检查状态请求”。 它会回复一个状态,而该脚本中的后续循环将以更高的状态回复...等。

祝好运!

编辑:我认为Thomas Schultz的文件撰写建议可能是最容易实现的。 唯一的缺点是等待打开文件 - 您需要确保您的PHP和Python脚本不会挂起或返回失败而不再尝试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM