出于某种原因,我需要在 Windows + PHP 中运行 C ++ 程序。 PHP 代码如:
$start = microtime();
exec("test.exe");
$end = microtime();
当我在命令行中将此php文件作为php test.php
运行时,“test.exe”告诉它的成本时间是11秒。但我在浏览器中使用apache运行它,如localhost/test.php
,它最终输出成本为252s。
apache在分叉新进程或其他什么时是否有任何限制?
btw,“test.exe”是我用windbg分析数据的程序。
我使用一些数据来测试其性能。
我。直接使用“test.exe”
CDumpAnalyze::Analyze time cost[2.328000]
II。用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
III。用apache运行
CDumpAnalyze::Analyze time cost[63.158000]
0.53862700 1378104642
0.75394800 1378104705
答案 0 :(得分:0)
显然,test.exe
的时间成本执行没有区别。因此,差异与您的Web服务器及其处理PHP
脚本的方式有关。 Apache是一个Thread Safe
Web服务器,并且存在许多调度和其他进程表,以便管理其上的线程安全性。此外,系统搜索从Apache exe
文件到test.exe
文件的路径所花费的时间可能会在超出您案例的时间成本方面发挥重要作用。
您可以在其他网络服务器上测试您的程序并发布结果以进行精确比较。