2016-04-04 4 views
0

У меня есть php-скрипт, который имеет цикл for, который загружает файлы формата pdf/jpg из AWS.PHP на IIS 7.5 Медленный браузер, но быстро через командную строку

В настоящее время я тестирую его, и он загружает 180 файлов, которые составляют около 64 МБ.

Когда я вызываю сценарий через браузер, используя http://localhost/script.php, сценарий занимает около 10-12 минут, чтобы полностью закончить.

Если я вызываю тот же скрипт из командной строки, запустив c: \ Program Files (x86) \ PHP \ v5.6 \ php-cgi.exe -f "c: \ WebApps \ scripts.php" полный Скрипт работает примерно через 5 секунд и загружает все файлы правильно.

Есть ли у кого-нибудь идеи, что может вызвать это огромное несоответствие?

Я использую PHP 5.6 на IIS 7.5 в Windows 2008 R2.

+0

при вызове его из браузера, запрос первым идет на веб-сервер. В зависимости от вашего сервера conf (cgi, fast-cgi для IIS) время, затрачиваемое на выполнение сценария, может отличаться. Таким образом, он занимает больше ресурсов, чем из командной строки. Я считаю целесообразным выполнять такую ​​задачу, когда взаимодействие с пользователем не требуется при использовании заданий cron через cli – sonam

+0

Я понимаю, что может быть разница, но разница в времени выполнения на одном и том же скрипте составляет более 100 раз. – rubendn

ответ

0

Я решил решить проблему, изменив метод, который использовал для загрузки файлов. Сначала я использовал file_put_contents, и я переключился на завиток.

Я использую следующую функцию:

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); 

}

+0

, вы должны добавить код к самому вопросу. – sonam