Python和PHP之间简单,强大的IPC

时间:2009-09-15 00:47:39

标签: php python ipc

我有一个python程序,它使用subprocess.Popen()函数启动PHP脚本。 PHP脚本需要与Python来回通信,我试图找到一种简单但强大的方法来管理消息发送/接收。

我已经使用基本套接字编写了一个工作协议,但它感觉不是很健壮 - 我没有任何逻辑来处理丢弃的消息,我甚至不完全理解套接字如何工作让我不确定关于还有什么可能出错。

是否有比原始套接字更容易的通用库或IPC框架?

  • ATM我需要支持Python PHP的东西,但将来我可能也希望能够使用C,Perl和Ruby。
  • 我正在寻找健全的东西,即当服务器或客户端崩溃时,另一方需要能够优雅地恢复。

2 个答案:

答案 0 :(得分:2)

听起来你想要一个通用的RPC框架。

你应该看看:

节俭可能更像你正在寻找的东西。它在内部被Facebook使用。

答案 1 :(得分:0)

您可以查看共享内存或命名管道,但我认为有两种可能的选项,假设这些语言中至少有一种用于webapp:

一个。使用数据库的原子性。在python中,开始一个事务,将一条消息放入一个表中,然后结束事务。从php开始一个事务,从表中取出一条消息或将其标记为“read”,然后结束事务。让你的PHP和/或python自我意识到不要发布两次相同的消息。瞧;可靠(可扩展)的IPC,使用现有的Web架构。

B中。使您的web服务器(假设为webapp)能够运行php和python,将任何内部进程锁定为localhost访问,然后使用标准库使用xmlrpc或soap从您的其他语言调用它们。这也是可扩展的,因为您可以稍后更改URL和安全锁定。