出于某种原因,我需要在 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/