如何使用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服务器执行了这个操作,将
如果你想运行用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。