在php后台运行C exec


running C exec in php background

我已经搜索并找到了一些对我的问题的建议,但几乎所有的建议都在执行php文件,所以我不知道这是否与它不适合我有关。

我的目标是让我的网页在不完成需要x时间的脚本的情况下完全加载,但它不会用这行代码完成。我缺什么了吗?我在很多地方都看到过这个答案,似乎对他们有用。

<?php
exec("sudo ./EscalonVel 50 2 100 10 20 &> /dev/null &");
echo "Hello";
?>

如果必须在页面上显示在C脚本上计算的数据,那么"某人"必须等到它完成后才能显示出来。如果数据直接来自执行的命令(执行的输出/stdout),则不能用&作为命令的后台:输出可能在调度请求之后出现,并且进程后台会断开其输出与实际执行的连接。所以你有两个选择:

  1. 完全显示页面"模板",并准备在HTML的最后接受内容(次优但可能)
  2. 做一个2请求页面:第一个显示模板(完整页面),第二个(AJAX)用命令执行的数据填充模板。根据您的编写方式,AJAX可以进行多次请求,直到命令终止,如果脚本运行超过20秒,这是最好的。然后,您将需要某种流程检查和一些后端来保存(通过命令)和查看(通过AJAX请求)数据,作为文件或数据库

希望它能有所帮助!