3

我有两个应用程序——一个 php web 应用程序和一个 c 程序。php 应用程序必须将数据发送到返回结果的 c 程序。c 程序必须在一个循环中一直运行 (while(true),因为它必须将先前输入的数据保存在内存中。

我通过使用文件(输入和输出文件)来处理在 c 和 php 之间传递数据的问题。如果我的 Web 应用程序发生更改,我的 php 脚本会更新一个文件,该文件由我的 c 程序读取。输出被写入另一个文件。Web 应用程序一直在寻找变化。

我认为这不是解决此类问题的最明智的解决方案。可能它很多不必要的文件访问。

在以下线程的启发和帮助下,我认为使用一种 c php 服务器桥可能是一个很好的解决方案。

如何在php(Web应用程序)中传递值和运行c程序

在Linux中的PHP和C可执行文件之间传递数据

我从mongoose开始。Mongoose 是一个非常轻量级的网络服务器。我目前的想法是我的 Web 应用程序将通过 POST 将数据直接发送到我的 c 程序。该请求由 mongoose 网络服务器处理。这是要走的路吗?或者将其拆分为两个应用程序将是一个更好的解决方案 1)处理输入输出的网络服务器 - 两个程序之间的变量由共享内存传递 2)我当前的 c 程序用于我的操作(通过共享内存输入/输出)

或者这完全是错误的方式,a)我应该坚持我的文件解决方案 b)有更好的方法吗?对于所有这些问题,我感到很抱歉,但我对 c 很陌生,而且很挣扎,对这一切都没有信心。

编辑
我尝试更具体地说明我的 c 程序的功能。基本上它是一个模拟。它就像一个状态流,有大约 20-40 个输入,这些输入都是整数,大多数时候只有 0 或 1。程序基于输入和先前的状态进行操作。通过将输入文件更改为原始状态,在一次迭代后重置输入。

输出文件始终使用相应的输出值更新(如 var = 1 var2 = 3)

4

2 回答 2

1

您可以使用DBMS进行数据共享。

于 2014-07-15T13:39:00.133 回答
0

我会将这个 C 程序开发为SOAP WebService,这样它可以执行一次并等待请求。(或最终在 CGI 模式下工作并在需要时执行)

您的 PHP 脚本(使用SOAP 库)可以从您的程序中调用单个 C 函数并接收它的结果。所有数据(如函数参数、对象等)都使用 XML 语法在不同语言之间交换。

我做过一次以建立 PHP、C 和 Python 之间的通信,效果很好。我使用gSOAP。我正式支持 C++,我知道这样做不是正确的方法,但你可以混合使用它们,因为它们是兼容的。

于 2014-07-16T09:09:54.247 回答