使用php运行c程序


run c program using php

如何使用php exec()运行c程序我从谷歌搜索中看到了很多结果通过exec()函数可以但是我不能用它我试过这样我用c 写了一个程序

**myc.c**
#include <stdio.h>
int main(int argc, char *argv[])
{
    printf("Hello, world'n");
    return 0;
}
**test.php**
<?php
exec('myc.c');
?>

在这方面有人能帮我吗我通过wamp服务器执行了这个操作,将

放在www文件夹中

如果你想运行用C编写的程序,那么你必须运行程序,而不是源代码。

将C编译成可执行文件,然后从exec调用可执行文件的名称。

C程序

#include <stdio.h>
int main(int argc, char **argv)
{
    if(argv[1])
    printf("First arg %d'n", argv[1]);
    if(argv[2])
    printf("Second arg %d", argv[2]);
    return 0;
}

PHP代码

<?php
exec("testone.exe 125 70", $out);
print_r($out);
?>

组合输出:

<!-- Array ( [0] => First arg 27 [1] => Second arg 27 ) -->

您应该编译C程序,然后用PHP执行它。PHP不会运行你的C代码,即使它们有相似的语法。

PHP exec函数将执行一个类似于在shell或命令提示符中执行的命令。

今天的PHP生态系统现在提供了几个更好的解决方案。

1.编写PHP扩展

您可以使用Zephir以类似PHP的语言轻松构建PHP扩展。它们提供了一种称为自定义优化器的机制,可以将任意C库或自定义C代码干净地绑定到您的扩展。

虽然它需要更多的工作,但它可以(YMMV)通过本地PHP调用获得接近C的性能,并升级您的PHP fu。你也可能会不小心爱上法尔康。

根据我的个人经验,纯Zephir实际上损害了纯PHP在我的任务中的性能,所以只有当你想利用现有的C库的功能,或者你有繁重的工作负载时,我才会推荐它。

Github的这条评论简要概述了为什么应该在内联CBLOCK上使用Zephir优化器,以及如何构建目录/文件。

2.使用外国金融机构

从PHP 7.4开始,外部函数接口是内置的。您也可以将其作为旧版本PHP的扩展进行安装。

好处是什么?您不必编写自己的PHP扩展来使用C代码。不利的一面?目前,FFI的性能并不能真正与实际的C代码相比。你可以把它想象成一根拐杖,而不是一辆蝙蝠车。

如果您关心高性能,请尝试选项1。