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

Gow*_*wri 4 php c c++

我有大c程序.我想在PHP中执行该功能并获得价值

例如

C程序

int add( int, int);         

void main()
{
  int i=1;
  printf("i starts out life as %d.", i);

  i = add(5, 10);           

  printf(" And becomes %d after function is executed.\n", i);
}


int add( int a, int b)          
{
  int c;
  c = a + b;
  return c;
}
Run Code Online (Sandbox Code Playgroud)

我的网络表单有值a和b.所以当我提交表单时,我想调用c函数add并获取输出.

我知道有一个函数可以在php中执行外部程序

exec()
shell_exec()
Run Code Online (Sandbox Code Playgroud)

但我不熟悉这个函数.请给我一些代码示例.我应该将c程序文件(在记事本中)放在服务器根文件夹中.

请指导我!提前致谢

Edg*_*net 5

我想最简单的方法是从PHP调用你的C,将参数作为参数传递.在C方面:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int i = add(atoi(argv[1]), atoi(argv[2]));
    printf("%d\n", i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

(显然,你应该添加错误检查).在PHP方面:

$a = ...;
$b = ...;
$c = exec("/path/to/sum $a $b");
Run Code Online (Sandbox Code Playgroud)

假设您的C程序称为sum.


编辑:只是添加一个关于目前为您建议的各种方法的评论:

  • exec()如上所述,启动C程序是最简单的解决方案.但是,每次调用C代码时都需要创建一个新进程,如果你这么做的话可能会很昂贵.

  • PHP扩展可以节省进程,并且应该更高效,特别是如果要对C代码进行多次调用,并且C代码可以快速计算结果.

  • 如果您的C程序启动缓慢(长时间初始化)但是可以快速处理查询,则守护程序会更有趣.


Ale*_*s G 0

有一种方法可以做到这一点 - 但无论如何它都不是微不足道的。您需要用 c/c++ 编写一个 php 扩展,将其安装在将执行 php 的服务器上并更新 php.ini - 然后您就可以直接从 php 访问 c/c++ 函数。看看这里: http: //devzone.zend.com/article/1021有关如何编写扩展的信息。