| Новости | 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(Или я где-то протупил в кешировании?)