IIS 7.5上的PHP通过浏览器速度较慢,但通过命令行速度较快

IIS 7.5上的PHP通过浏览器速度较慢,但通过命令行速度较快,php,iis,iis-7.5,php-5.6,Php,Iis,Iis 7.5,Php 5.6,我有一个php脚本,它有一个for循环,可以从AWS下载一些pdf/jpg文件 我目前正在测试它,它正在下载180个文件,总共约64MB 当我使用浏览器调用脚本时,脚本需要大约10-12分钟才能完全完成 如果通过运行c:\Program Files(x86)\PHP\v5.6\PHP-cgi.exe-f“c:\WebApps\scripts.PHP”从命令提示符调用相同的脚本,则整个脚本将在大约5秒钟内运行并正确下载所有文件 有人知道是什么导致了如此巨大的差异吗 我在Windows 2008 R

我有一个php脚本,它有一个for循环,可以从AWS下载一些pdf/jpg文件

我目前正在测试它,它正在下载180个文件,总共约64MB

当我使用浏览器调用脚本时,脚本需要大约10-12分钟才能完全完成

如果通过运行c:\Program Files(x86)\PHP\v5.6\PHP-cgi.exe-f“c:\WebApps\scripts.PHP”从命令提示符调用相同的脚本,则整个脚本将在大约5秒钟内运行并正确下载所有文件

有人知道是什么导致了如此巨大的差异吗


我在Windows 2008 R2的IIS 7.5上使用PHP5.6。

我最终通过更改下载文件的方法解决了这个问题。我最初使用的是file_put_内容,然后切换到curl

我正在使用以下功能:

function retrieveandsave($url, $pathtosave, $filename){
if (!file_exists($pathtosave)) {
    mkdir($pathtosave, 0777, true);
}

$fp = fopen ($pathtosave . $filename, 'w+');
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_BINARYTRANSFER, true );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, false );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );

curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 10 );
curl_setopt( $ch, CURLOPT_FILE, $fp );
curl_exec( $ch );
curl_close( $ch );
fclose( $fp );

}

从浏览器调用时,请求首先进入web服务器。根据您的服务器配置(cgi,针对IIS的快速cgi),执行脚本所需的时间可能会有所不同。所以它比命令行占用更多的资源。我发现,在不需要通过CLI使用cron作业进行用户交互的情况下执行此类任务是明智的。我知道可能会有差异,但在同一个确切的脚本上,执行时间会相差100倍以上。您应该在问题本身中添加代码。