Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Можно ли ускроить getimagesize
 
 автор: sanika   (02.06.2014 в 17:12)   письмо автору
 
 

Проблема в том что надо узнать количество картинок шириной боле 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 картинках выполняется более минуты

  Ответить  
 
 автор: confirm   (02.06.2014 в 18:48)   письмо автору
 
   для: sanika   (02.06.2014 в 17:12)
 

Странный способ достучаться до изображений.

  Ответить  
 
 автор: sanika   (02.06.2014 в 20:44)   письмо автору
 
   для: confirm   (02.06.2014 в 18:48)
 

буду благодарен за более простой и быстрый способ

  Ответить  
 
 автор: confirm   (02.06.2014 в 20:50)   письмо автору
 
   для: sanika   (02.06.2014 в 20:44)
 

Если бы можно было знать чего пытаются...

Из этого просто не понятно, почему для того, чтобы получить по адресу своего ресурса изображения, нужно парсить html-исходник.

  Ответить  
 
 автор: sanika   (02.06.2014 в 20:59)   письмо автору
 
   для: confirm   (02.06.2014 в 20:50)
 

Ресурс не мой - это чужой урл. мне надо получить список изображений с него которые шире 400 пикселей.

  Ответить  
 
 автор: confirm   (02.06.2014 в 21:30)   письмо автору
 
   для: sanika   (02.06.2014 в 20:59)
 

Если не ваш, что вы тогда хотите, чтение с удаленного ресурса, это время.

  Ответить  
 
 автор: sanika   (02.06.2014 в 23:37)   письмо автору
 
   для: confirm   (02.06.2014 в 21:30)
 

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

  Ответить  
 
 автор: confirm   (02.06.2014 в 23:59)   письмо автору
 
   для: sanika   (02.06.2014 в 23:37)
 

Заголовок вернет только размер - Content-Length

  Ответить  
 
 автор: sanika   (03.06.2014 в 00:26)   письмо автору
 
   для: confirm   (02.06.2014 в 23:59)
 

Т.е. по другому никак?

  Ответить  
 
 автор: confirm   (03.06.2014 в 00:28)   письмо автору
 
   для: sanika   (03.06.2014 в 00:26)
 

Ну а как? Нафик бы вообще браузер ожидал загрузки изображения, чтобы отвести под него место, и атрибуты/стили указывающие размер его тоже были бы не нужны, если бы сервер вычислял и предварительно сообщал об этом клиенту.

PS. Между прочим, открытие соединения, это тоже время. Единственное, что можно сделать, это зная типы изображений, считывать не его, а только начало, включающее заголовок, и из него извлекать нужное. Летать не будет, но загружать нужно будет гораздо меньший объем.

  Ответить  
 
 автор: sanika   (03.06.2014 в 01:28)   письмо автору
 
   для: confirm   (03.06.2014 в 00:28)
 

Спасибо большое, буду пробовать

  Ответить  
 
 автор: moonfox   (03.06.2014 в 08:14)   письмо автору
 
   для: confirm   (03.06.2014 в 00:28)
 

а это верно что объект js image позволяет обратится к картинке без загрузки?

  Ответить  
 
 автор: Саня   (03.06.2014 в 08:44)   письмо автору
 
   для: moonfox   (03.06.2014 в 08:14)
 

Да. Если картинка в кеше браузера.

  Ответить  
 
 автор: confirm   (03.06.2014 в 12:36)   письмо автору
 
   для: moonfox   (03.06.2014 в 08:14)
 

alert($(document).append('<img/>').length)


Если добавить на страницу, например DIV, то будет ли он существовать? Будет, только не обладать никакими свойствами, но обращаться к нему пожалуйста. Тоже самое и объект img - оно будет существовать, но пустое.

PS - ой )

alert($('<img/>').appendTo(document).length)

  Ответить  
 
 автор: Commander   (03.06.2014 в 20:30)   письмо автору
 
   для: moonfox   (03.06.2014 в 08:14)
 

Есть браузер - на компе, и есть сервер - в сети. Браузер спрашивает у сервера index.php - сервер отдает браузеру то, что сгенерировал index.php. Если браузер спросит у сервера image.gif - сервер отдаст ему image.gif, если такая картинка существует. Обратиться к объекту, находящемуся на странице можно, если он создан. Если объект - картинка, то тоже можно. Как только браузер получет его src="image.gif", он его скачивает с сервера. Пока он его не скачал, сама картинка не видна ( а как браузер ее выведет, если он ее еще не получил?) Пока браузер картинку не скачал, он будет знать о ней только то, что о ней прописано в документе и в прицепленных JS и CSS.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования