Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
mashi 20.09.2007 11:08 / 20.09.2007 11:12
Внешний php-шный скрипт генерит картинки, например для капчи. И работает он достаточно быстро (0,001--0,009сек), но<img src="image.html?id=137" /> ########################################################## #image.html @main[] ... $response:body[^getImageFile[^form:id.int(0)]] ... # end of @mian[] ########################################################## @getImageFile[id][sImageGeneratorPath;sPathToImageCacheDir;hfImages;fImage] $sImageGeneratorPath[*********************************/image.php] $sPathToImageCacheDir[$MAIN:CACHE_DIR/images] $hfImages[^hashfile::open[$sPathToImageCacheDir/cache]] ^if($hfImages.$id){ # картинка свежая, читаем ее из кеша $result[^file::load[binary;$sPathToImageCacheDir/${id}.jpg]] }{ # картинки в кеше нет или она не свежая. Делаем новую и создаем ключ в хешфайле $fImage[^file::load[binary;${sImageGeneratorPath}?id=$id][$.timeout(5)]] ^fImage.save[binary;$sPathToImageCacheDir/${id}.jpg] # Время кеширования. # Кешировать будем с разным временем (30--60min), что бы небыло такого, что все картинки состарятся в один и тот же момент. # iCacheTime = [рендомное кол-во мин от 30 до 60] + [рендомное кол-во секунд от 1 до 60] # 1/24/60 = одна минута # 1/24/60/60 = одна секунда $iCacheTime(1/24/60*(^math:random(31)+30) + 1/24/60/60*(^math:random(61)+1)) $hfImages.$id[ $.value[$id] $.expires($iCacheTime) ] $result[$fImage] }Интересный момент:
#img-id time datestamp 85 0.0022 2007-09-19 22:54:37 85 0.0022 2007-09-19 22:54:43 85 0.1084 2007-09-19 22:54:48 85 0.0022 2007-09-19 22:54:52 85 0.0033 2007-09-19 22:54:56 85 0.0995 2007-09-19 22:55:00 85 0.1087 2007-09-19 22:55:16 85 0.0816 2007-09-19 22:55:27 85 0.0021 2007-09-19 22:55:32 85 0.0017 2007-09-19 22:55:46 85 0.0973 2007-09-19 23:03:19 85 0.0018 2007-09-19 23:12:12 85 0.1268 2007-09-19 23:13:25 85 0.0022 2007-09-19 23:44:21 85 0.0059 2007-09-20 00:40:13 85 0.0025 2007-09-20 01:33:09 85 0.0058 2007-09-20 02:31:33 85 0.0021 2007-09-20 03:29:19 85 0.0022 2007-09-20 04:05:51 85 0.0153 2007-09-20 04:59:39 85 0.0020 2007-09-20 05:40:55 85 0.0021 2007-09-20 06:22:10 85 0.0057 2007-09-20 07:18:48 85 0.0056 2007-09-20 08:15:37 85 0.0720 2007-09-20 08:36:53(Или я где-то протупил в кешировании?)