php - 在 "exec()"下运行 "windows+apache+php5.4"比命令行慢

标签 php apache exec

出于某种原因,我需要在 Windows + PHP 中运行一个 C++ 程序。 PHP 代码如下:

$start = microtime();
exec("test.exe");
$end = microtime();

当我在命令行中将此 php 文件作为 php test.php 运行时,“test.exe”告诉它的成本时间是 11 秒。但是我在像 localhost/test.php 这样的浏览器中用 apache 运行它,它最终输出它花费了 252s。

当 apache 派生一个新进程时,它是否有任何限制,或者其他什么?


顺便说一句,“test.exe”是我编写的一个程序,用于使用 windbg 分析数据。

我用一些数据来测试它的性能。

我。直接使用“test.exe”

CDumpAnalyze::Analyze time cost[2.328000]

二。使用 php 命令行调用。

$start = microtime();
system("cd F:\\DumpPlatform\\bin\\server && test.exe --cfg=dump_config.ini --gameversion=10000");
//exec("dir");
$end = microtime();

echo $start."\n";
echo $end."\n";

CDumpAnalyze::Analyze time cost[2.982000]
0.09448800 1378104101
0.11078900 1378104104

三。使用 Apache 运行

CDumpAnalyze::Analyze time cost[63.158000] 
0.53862700 1378104642 
0.75394800 1378104705

最佳答案

显然,test.exe 的执行时间成本没有差异。因此,差异与您的 Web 服务器及其处理 PHP 脚本的方式有关。 Apache 是一个 Thread Safe 网络服务器,并且存在许多调度表和其他进程表以管理其上的线程安全。此外,您的系统搜索从 Apache exe 文件到您的 test.exe 文件的路径所花费的时间可能会在您的案例中超过时间成本方面发挥重要作用。

您可以在其他网络服务器上测试您的程序并发布结果以进行精确比较。

关于php - 在 "exec()"下运行 "windows+apache+php5.4"比命令行慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18565284/

相关文章:

php - 如何为 get_headers PHP 函数设置用户代理

php - 如何检查你的代码环境是在 Windows 上还是在 Linux 或其他操作系统上

PHP 用户级 session 持久化

php - 如何从url中删除路径信息?

r - 从node.js调用shell脚本

python - 第二个同时 'for loop' 执行中断第一个

php - 你能在不先获取数组的情况下从数组中获取值吗?

php - 如何使用 MySQL 和 PHP 根据用户输入日期从表中获取数据并进行格式化

php - 如何在 PHP 中将数据的十六进制表示形式转换为二进制数据?

php - 为什么我在 php exec 中的 bash 中调用 "sh"得到 "echo $0"?