Как решить проблему частичной загрузки изображений при парсинге?

Здравствуйте.
При парсинге, бывает, изображение сохраняется частично загруженное, т.е половина картинки - серый фон.
Проблему решаю с помощью sleep(1).
Есть ли иные способы удостовериться, что изображение полностью прогрузилось перед скачиванием?
Спасибо.

Метод получения данных:
public function parseProduct(array $page)
    {
        $this->page = $page;

        foreach ($this->page as $item) {
            $phpQuery = phpQuery::newDocument($item->getBody()->getContents());
            $catalog = $phpQuery->find('.img_big_img');
            $re = '~<td>Артикул: <span.*?">(?<articul>.*?)</span>.*?<td>Наименование: <span.*?">(?<name>.*?)</span>.*?<td>Цена: <span.*?">(?<price>.*?)</span>~s';
            preg_match_all($re, $phpQuery, $matches, PREG_SET_ORDER, 0);
            $imageExtension = pathinfo(pq($catalog)->attr('src'), PATHINFO_EXTENSION );
            for($i = 0; $i < count($matches); $i++){
                $productDataArr[] = [
                    'imageSrc' => pq($catalog)->attr('src'),
                    'imageName' => $matches[$i]['name'],
                    'productPrice' => $matches[$i]['price'],
                    'productArticul' => 'БЧ' . $matches[$i]['articul'],
                    'imageExtension' => $imageExtension,
                ];
            }
        }
        return $productDataArr;
    }

Сохранение:
public function saveProduct($imageDir, array $imageInfo)
    {

        if (!file_exists('cover/' . $imageDir)) {
            mkdir('cover/' . $imageDir, 0777, true);
        }
        foreach ($imageInfo as $item) {
            copy($item['imageSrc'], 'cover/' . $imageDir . '/' . Helper::transliterate($item['productArticul']) . '.' . $item['imageExtension']);
           // sleep(rand(2, 4));
        }
      //  $this->saveProductDataToExcel($imageInfo, $imageDir);

    }
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
@vism
file_get_contents попробуйте
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы