Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Инет линейки, занимался ли кто то ими?

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

Mira



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Интересуте такой вопрос.
Как правильно реализовать , у меня в голове два варианта
 
1. постоянно генерировать картинку, но возможны большие нагрузки на сервер.

Код:
<img src='crruler.php?...' ....
 
 
2. использовать статические картинки на сервере и раз в сутки их пересчитывать

Код:
<img src='ruler45314523.gif' ....
 
 
второй вариант хорош, но вот когда пользователю линейка уже не будет нужна, сервер всеравно будет ее пересчитывать. По крайней мере я не знаю как отследить то, что картинка используется.
 
при первом варианте, при любом обрашении к страничке будет заново создаваться картинка, что плохо отразиться на продуктивности, но зато, мы сможем отслеживать "надобность" линейки.
 
возможен вариант как в п1, но при обращении, уже не строить картинку заново, а брать из файла и таким же ообразом отдавать, но нагрузка всеравно будет.
 
может кто поделится опытом или мыслями по этому поводу.
 
спасибо.

Всего записей: 1627 | Зарегистр. 25-11-2003 | Отправлено: 07:31 14-10-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mira

Цитата:
использовать статические картинки на сервере и раз в сутки их пересчитывать  

зачем? генерить и сохранять в кэш. далее смотрим, если есть в кэше - тащим оттуда.. нет - генерим.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 07:33 14-10-2006
Mira



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
зачем? генерить и сохранять в кэш. далее смотрим, если есть в кэше - тащим оттуда.. нет - генерим.

спасибо, а  можно подробней? и где можно об этом почитать, дайте пожалуйста зацепку .

Всего записей: 1627 | Зарегистр. 25-11-2003 | Отправлено: 08:13 14-10-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mira

Цитата:
спасибо, а  можно подробней? и где можно об этом почитать, дайте пожалуйста зацепку

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

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 09:11 14-10-2006
Mira



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
если нет, то генерим, если есть, используем уже готовый.

 
ну так это же тоже самое что я сказал
 

Цитата:
возможен вариант как в п1, но при обращении, уже не строить картинку заново, а брать из файла и таким же ообразом отдавать, но нагрузка всеравно будет.  

 
 
спасибо за совет включить голову...... очень полезный ......
 
 
Добавлено:
просто если у пользователя изначатьно будет ссылка на картинку, то это второй вариант, если ссылка на скрипт (пхп файл) тогда возможно брать из кеша, но всеравно надо будет считывать файл и отадвать в поток.

Всего записей: 1627 | Зарегистр. 25-11-2003 | Отправлено: 11:41 14-10-2006
edogs

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mira
1) Отдавать код картинок как <img src="picture1.jpg">
2) Настроить mod_rewrite так, что если он не находит файл (ключ -f для проверки существования файла) картинки на диске, то пусть редиректит запрос на php скрипт с параметром "имя картинки"
3) php скрипт пусть берет имя картинки, на его базе делает картинку линейки и  
3а) записывает картинку на диск
3б) отдает пользователю контент картинки
4) иногда директорию с картинками можно чистить. допустим 4 раза в день, постепенно, а не разом (для того что бы не было пиковых нагрузок если что)
 
 
 
Добавлено:
Плюсы такого подхода понятны.
Скрипт на 1 картинку запускается только 1 раз в день. Лишних и мертвых картинок не генерите и т.д..

Всего записей: 1777 | Зарегистр. 25-07-2004 | Отправлено: 20:22 14-10-2006
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mira
Если под термином линейки подразумевается "прогрес бары" то можно сделать намного экономно. Достаточно взять div с фоновым изображением (любой паттерн) и потом программно изменять ширину div-а. Изображение div-а же само будет заполняться паттерном (размер которого почти всегда меньше 500 байта, что дает мгновенную загрузку).
 
Прикольное когда паттерн анимированный gif, эффект получается прикольный
 
Если линейка это что-то другое прошу пояснить, может и для нее найдется оригинальное решение

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 12:30 15-10-2006
edogs

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6

Цитата:
Если линейка это что-то другое прошу пояснить

Линейки это действительно "прогресс бар", обычно подложка по которому двигается (день ото дня) какая-нибудь фигня типа стрелки.
Но линейки предназначены они для использования на других форумах, типа в подписях и т.д..
Поэтому никакие div-ы и програмные решения там не катят, только чистая картинка. <img src='картинка.жпг'> и никаких излишеств. В лучшем случае ещё ссылку можно добавить.

Всего записей: 1777 | Зарегистр. 25-07-2004 | Отправлено: 13:40 15-10-2006
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
edogs

Цитата:
В лучшем случае ещё ссылку можно добавить

Теперь вник в курс дела. В подписи также разрешается добавить ссылку на графику, вот здесь и приходим к тому что говорил топик стартер Ну тогда я соглашусь с мыслью Cheery на счет генерации изображения.

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 13:46 15-10-2006
edogs

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6
Просто кэш обычно подразумевает что _скрипт_ проверяет наличие изображения, и если оно есть, то берет с диска (вместо генерации) и отдает юзеру. Если нет - генерит и записывает.
Разумнее же сделать генерацию статики on demand
Немного разные вещи.

Всего записей: 1777 | Зарегистр. 25-07-2004 | Отправлено: 15:51 15-10-2006
Mira



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
насчет кеширования, вот так стоит делать?
 

Цитата:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*).gif$ http://скрипт/createimage.php?name=$1.gif [L]  
 

Всего записей: 1627 | Зарегистр. 25-11-2003 | Отправлено: 04:57 16-10-2006
Mira



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
еще интересует такой вопрос. как проверять активность использования (надобнорсти линейки)
 
через какой-то определенный промежуток времени, вполне вероятно, линейка не понадобится. ходил я ходил на форум, линейка была в подписи, а потом раз и перестал, линейка в подписи осталась. при обращении к страничке на которой будет линейка происходит обращение к скрипту,он записывает последнее время когда к нему ообращались.... но ведь это может длиться бесконечно, то пользователи загружают страничку с линейкой уже не "интересующегося" своим аккаутном пользователя, то поисковики могут дергать... А обрабатывать приходится все активные линейки, а эот дополнительная нагрузка, и если исходить из самого плохого результата то все линейки которые были созданы пользователями должны обрабатываться. Что не есть правильно и хоршо....
 
Буду рад вашим мыслям.
Спасибо.

Всего записей: 1627 | Зарегистр. 25-11-2003 | Отправлено: 06:18 17-10-2006
edogs

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mira

Цитата:
обращении к страничке на которой будет линейка происходит обращение к скрипту,он записывает последнее время когда к нему ообращались....  

Зачем записывать время скриптом? В логах апача всё это замечательно будет присутствовать.
Да и варианте с %{REQUEST_FILENAME} !-f обращения к скрипту каждый раз не будет.

Цитата:
то пользователи загружают страничку с линейкой уже не "интересующегося" своим аккаутном пользователя,  

Если пользователь не интересуется своим аккаунтом, то он не будет заинтересован зайти на свой аккаунт раз в месяц допустим и подтвердить важность для него этой линейки. Можно присылать по почте уведомления. Можно прописать в правилах обязательность захода. Можно выставить срок действия линейки допустим 90 дней, и по истечении 90 дней без "интереса" пользователя к своему аккаунту выводить вместо линейки красивой - тонкий намек "линейка юзера истекла". Можно по истечении линейки скриптом больше не обрабатывать вообще линейку, а сделать редирект для всех на одну и ту же картинку 1х1 размером.

Цитата:
то поисковики могут дергать...  

Поисковики обычно редко пытаются индексировать картинки

Всего записей: 1777 | Зарегистр. 25-07-2004 | Отправлено: 14:13 17-10-2006
Mira



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
edogs
спасибо за ответ.
но как проверить это
Код:
без "интереса" пользователя
 Я же объяснил, пример, где так получилось, пользователь оставил свою линейку на страничке, которая часто кем-бы то ни было открывается, а значит, получается линейка нужна, хоть и пользователя уже , как такового нет.
 
представьте, есть важная тема на руборе, я зашел, написал одно собщение, может даже не важное, и все, меня больше нет, а линейка висит. Тема очень актуальна, или не очень, а это значит что линейка будет грузится всякий раз когда кто-то читает страничку (упростим схему, допустим будет хоть 1 чел, который каждый день попадает в эту тему) а значит линейка с бесконечным сроком жизни.
 
Второе, вариант с сроком в 90 дней и тд . отличный, но , мне кажется, должно быть лучше решение.
 
еще по поводу директив для .htaccess, подскажите пожалуйста.
например у меня задача, выдавать пользователю СВОЮ картинку на каждый день недели. Например, Сегодня понедельник Иван Иванович Иванов(u001m.jpg). Сегодня вторник ИИИ(u001t.jpg) и тд. и еще Сегодня понедельник Андрей Андреевич Андронов(u002m.jpg) и тд. (u002t.jpg) (u001w.jpg) ...
 
им выдается код линейки например тако  
для ИИИ - user0001.jpg <img src="user0001.jpg">
для ААА - user0002.jpg <img src="user0002.jpg">
картинок этих, естественно нет, но есть директивы в htaccess
 
 
Подробнее...  
 
 
createimage.php делает следующее
1. получает день недели, первую букву - S M T и тд.  
2. читает в поток файл "u".$userID.DayOfWeek[0].jpg
 
 
Будет ли такое работать (хотя это я шас сам проверю) а вот на сколько эффективно, может можно придумать что но лучше?
 

Код:
В логах апача всё это замечательно будет присутствовать.
 
кстати, и зачем лог апаче, проще при обращении добавть дату в скрипт и все, или я что то не допонял?:
 
спасибо.

Всего записей: 1627 | Зарегистр. 25-11-2003 | Отправлено: 20:08 17-10-2006
edogs

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mira
Так Вы определитесь по какому принципу хотите считать линейки не нужными.
Если по тому "показывается ли она кому-то" это одно, и честно говоря, в таком варианте, мы не видим смысла удалять старые... точнее по крону допустим раз в день они и так удалятся, а сгенерятся только on demand.
Если по тому "нужна ли она пользователю" это другое, но кроме как "попросить пользователя выставить срок" или "опросить пользователя через какой-то срок" у Вас другого варианта нет - только общение с пользователем.

Цитата:
например у меня задача, выдавать пользователю СВОЮ картинку на каждый день недели

Нам кажется htaccess должен уметь работать с датами. Пусть переписывает урл в зависимости от даты. Если не умеет, тогда сложнее, и тогда от записи реальных картинок придется отказаться, а это будет плохо.

Цитата:
кстати, и зачем лог апаче, проще при обращении добавть дату в скрипт и все, или я что то не допонял?:  

1) Зачем нагружать скрипт лишней работой? А логи апача и так ведуться по любому.
2) Если Вам нужна дата последнего обращения к картинке, то в варианте с htaccess и "-f" у Вас скрипт её ну никак не будет иметь. Скрипт будет иметь дату последней генерации картинки, но не обращения к ней.

Всего записей: 1777 | Зарегистр. 25-07-2004 | Отправлено: 20:31 17-10-2006
Mira



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
хм как все запутано...

Всего записей: 1627 | Зарегистр. 25-11-2003 | Отправлено: 17:24 18-10-2006
Mira



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
сделал вот такой примерчик
 
getfile.php

Код:
<?
// get contents of a file into a string
 
$id=77;
if ($_GET['id']) $id=$_GET['id'];
$filename = "C:/www/test.it/test_vivoda_zadanoy_kartinki/$id.gif";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
header("Content-type: image/gif");
echo $contents;
 
?>
 
 
 
index.php
 

Код:
<?
$time_start = microtime(true);  
?>
 
<img src="getfile.php?id=26">
 
<?php
$time_start = microtime(true);
 
// Sleep for a while
 
$time_end = microtime(true);
$time = $time_end - $time_start;
 
echo "Did nothing in $time seconds\n";
?>  
 
<?
$time_start = microtime(true);  
 
$time_start2 = microtime(true);
?>
 
<Br>
<img src="user26.gif">
 
<?php
 
// Sleep for a while
 
$time_end2 = microtime(true);
$time2 = $time_end2 - $time_start2;
 
echo "Did nothing in $time2 seconds\n";
 
$time_start3 = microtime(true);
?>  
 
<Br>
<img src="26.gif">
 
<?php
 
// Sleep for a while
 
$time_end3 = microtime(true);
$time3 = $time_end3 - $time_start3;
 
echo "Did nothing in $time3 seconds\n";
?>  
 
 
время выполнения приблизительно одинаково,  
что дает повод считать что особой нагрузки на сервер не будет даже при большом кол-ве народу. Или я ошибаюсь?

Всего записей: 1627 | Зарегистр. 25-11-2003 | Отправлено: 14:26 19-10-2006
edogs

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mira

Цитата:
getfile.php  

Используйте file_get_contents($file)
и intval($id)

Цитата:
время выполнения приблизительно одинаково

Время вывода на экран надписей
<img src="getfile.php?id=26">
или
<img src="26.gif">  
иили
<img src="user26.gif">
ну да, примерно одинаковое. С чего бы ему быть разным?
Только зачем Вы это меряли ? :-\
 
 
 
Добавлено:
P.S.: Одинаковое время выполнения не дает повод считать что нагрузка будет одинаковая.  
Если привести грубый пример, трактор протащит 2 тонны за 5 минут и болид ф1 протащит 2 тонны за 5 минут, вопрос - кому от этих 2 тонн будет легче?
А есть ещё количество пожирания памяти.

Всего записей: 1777 | Зарегистр. 25-07-2004 | Отправлено: 15:10 19-10-2006
Mira



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо.
Но тогда не совсем понятно что и как делать что бы было "правильно"!
 
Если не слжоно пожалуйста натолкните на мысль с примерами
 
Спасибо.

Всего записей: 1627 | Зарегистр. 25-11-2003 | Отправлено: 06:10 20-10-2006
edogs

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mira
А что непонятно в нашем первом сообщении в теме?
Очень подробно всё расписали.
Да и Вы судя по Вашему примеру .htaccess все правильно подумали.
Пример, извините, писать полный лениво, но раз в "псевдокоде"
допустим картинки в корне, раз в сутки по крону удаляем все картинки из корня
кладем хтакекес вида

Код:
 
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule ^(.*).gif$ http://скрипт/createimage.php?name=$1.gif [L]  
 

createimage.php

Код:
 
на основе данных $name создаем картинку
записываем её в файл $name.gif в корень  
и
показываем её юзеру как у вас в примере с getfile
 

 
Че делает хтакес
Если картинки НЕТ, то идёт редирект на скрипт создания картинки, который создает картинку и возвращает её юзеру.  
Если картинка ЕСТЬ (т.е. мы её уже записали скриптом когда-то), то апач отдаст сразу картинку, без запуска скрипта.
Раз в сутки картинки удаляются и будут генериться заново по мере прихода запросов на картинки. Что бы не создавать пиковой нагрузки можно удалять чаще размазывая нагрузку по суткам. Типа раз в час удалять каждую 24 картинку
 
Добавлено:
картинки отдаются в виде <img src="1"> типа

Всего записей: 1777 | Зарегистр. 25-07-2004 | Отправлено: 15:12 20-10-2006 | Исправлено: edogs, 15:14 20-10-2006
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Интернет » Web-программирование » Инет линейки, занимался ли кто то ими?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru