|
|
|
| Проблема в том что надо узнать количество картинок шириной боле 400 пикселей
выполняю таким образом
$start = microtime(true);
$url=$_GET[url];
$html = file_get_contents($url);
$doc = new DOMDocument();
@$doc->loadHTML($html);
$tags = $doc->getElementsByTagName('img');
$i=0;
$all=0;
foreach ($tags as $tag) {
list($width) = getimagesize($tag->getAttribute('src'));
$all++;
if($width>400)
{
$i++;
}
}
echo $i;
$time = microtime(true) - $start;
printf('<br>Скрипт выполнялся %.4F сек.', $time);
|
В результате время работы скрипта при наличии на странице большого числа картинок просто зашкаливает. напрмиер при 20 картинках выполняется более минуты | |
|
|
|
|
|
|
|
для: sanika
(02.06.2014 в 17:12)
| | Странный способ достучаться до изображений. | |
|
|
|
|
|
|
|
для: confirm
(02.06.2014 в 18:48)
| | буду благодарен за более простой и быстрый способ | |
|
|
|
|
|
|
|
для: sanika
(02.06.2014 в 20:44)
| | Если бы можно было знать чего пытаются...
Из этого просто не понятно, почему для того, чтобы получить по адресу своего ресурса изображения, нужно парсить html-исходник. | |
|
|
|
|
|
|
|
для: confirm
(02.06.2014 в 20:50)
| | Ресурс не мой - это чужой урл. мне надо получить список изображений с него которые шире 400 пикселей. | |
|
|
|
|
|
|
|
для: sanika
(02.06.2014 в 20:59)
| | Если не ваш, что вы тогда хотите, чтение с удаленного ресурса, это время. | |
|
|
|
|
|
|
|
для: confirm
(02.06.2014 в 21:30)
| | getimagesize для определения размера скачивает всю картинку. может есть способ узнать по заголовкам ее физический размер? Или другой способ определения ширины рисунка? Сам парсинг занимает мало времени. больше всего именно определение ширины изображений | |
|
|
|
|
|
|
|
для: sanika
(02.06.2014 в 23:37)
| | Заголовок вернет только размер - Content-Length | |
|
|
|
|
|
|
|
для: confirm
(02.06.2014 в 23:59)
| | Т.е. по другому никак? | |
|
|
|
|
|
|
|
для: sanika
(03.06.2014 в 00:26)
| | Ну а как? Нафик бы вообще браузер ожидал загрузки изображения, чтобы отвести под него место, и атрибуты/стили указывающие размер его тоже были бы не нужны, если бы сервер вычислял и предварительно сообщал об этом клиенту.
PS. Между прочим, открытие соединения, это тоже время. Единственное, что можно сделать, это зная типы изображений, считывать не его, а только начало, включающее заголовок, и из него извлекать нужное. Летать не будет, но загружать нужно будет гораздо меньший объем. | |
|
|
|
|
|
|
|
для: confirm
(03.06.2014 в 00:28)
| | Спасибо большое, буду пробовать | |
|
|
|
|
|
|
|
для: confirm
(03.06.2014 в 00:28)
| | а это верно что объект js image позволяет обратится к картинке без загрузки? | |
|
|
|
|
|
|
|
для: moonfox
(03.06.2014 в 08:14)
| | Да. Если картинка в кеше браузера. | |
|
|
|
|
|
|
|
для: moonfox
(03.06.2014 в 08:14)
| |
alert($(document).append('<img/>').length)
|
Если добавить на страницу, например DIV, то будет ли он существовать? Будет, только не обладать никакими свойствами, но обращаться к нему пожалуйста. Тоже самое и объект img - оно будет существовать, но пустое.
PS - ой )
alert($('<img/>').appendTo(document).length)
|
| |
|
|
|
|
|
|
|
для: moonfox
(03.06.2014 в 08:14)
| | Есть браузер - на компе, и есть сервер - в сети. Браузер спрашивает у сервера index.php - сервер отдает браузеру то, что сгенерировал index.php. Если браузер спросит у сервера image.gif - сервер отдаст ему image.gif, если такая картинка существует. Обратиться к объекту, находящемуся на странице можно, если он создан. Если объект - картинка, то тоже можно. Как только браузер получет его src="image.gif", он его скачивает с сервера. Пока он его не скачал, сама картинка не видна ( а как браузер ее выведет, если он ее еще не получил?) Пока браузер картинку не скачал, он будет знать о ней только то, что о ней прописано в документе и в прицепленных JS и CSS. | |
|
|
|