2015-02-26 2 views
2

Я должен сохранить ~ 5000 изображений на диск, и мой скрипт работает очень медленно. Среди прочего, мой скрипт содержит цикл foreach, который сохраняет изображения на диск. Я думаю, проблема связана с функцией file_put_contents, потому что, когда я прокомментирую ее, все работает отлично.file_put_contents() очень медленно при работе с большим количеством изображений

Вот мой код:

file_put_contents($pathimg . '.jpg', file_get_contents($url)); 
file_put_contents($pathimg . '.jpg', file_get_contents($url3)); 

Есть ли способ, чтобы сохранить эти изображения быстрее?

+1

Возможно, ваш диск работает медленно –

+0

его на основе вашей скорости процесса системы i tihnk .. – Thennarasu

+1

Возможно, ваша система выполняет слишком много операций ввода-вывода. Разрешить больше памяти для вашего php-процесса может помочь изменить memory_limit в php.ini на 'memory_limit = 512MB'. Также попробуйте реализовать сон, который помешал бы вашему скрипту сразу написать 5000 изображений. –

ответ

0

Вы можете использовать CURL, который работает быстрее. Вот функция, которую вы можете использовать.

function grab_image($url,$saveto){ 
    $ch = curl_init ($url); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); 
    $raw=curl_exec($ch); 
    curl_close ($ch); 
    if(file_exists($saveto)){ 
     unlink($saveto); 
    } 
    $fp = fopen($saveto,'x'); 
    fwrite($fp, $raw); 
    fclose($fp); 
} 

Убедитесь, что включено разрешение php.ini allow_url_fopen.

1

Введенный вами код делает file_get_contents и file_put_contents в одной строке. Медленная скорость, которую вы видите, может быть либо загрузкой изображения (file_get_contents), либо записью на диск (file_put_contents). Однако скорость записи в большинстве случаев будет незначительной для записи изображения на диск.

Возможно, вам стоит сравнить оба их отдельно, чтобы узнать, что вызывает медленное поведение.

+0

Привет благодарю вас. Я выяснил, что file_get_contents работает слишком медленно. Я заменил его CURL и все еще не работает, как я ожидал ... – Dianna

Смежные вопросы