#php #model-view-controller #session #caching #filesystems
#php #модель-представление-контроллер #сессия #кэширование #файловые системы
Вопрос:
Я пытаюсь создать какую-то новую «файловую систему» для класса, обслуживающего кэш PHP. Чего я пытаюсь добиться от этого, так это возможности определять, какие изображения уникальны для каждого URL-адреса реферера с сайта, посредством вызова типа шаблона MVC для каждого изображения. Затем, чтобы кэшировать это, я хочу упаковать каждое изображение в один файл, используя сеансы PHP. Я разработаю систему для определения необходимости запуска сеанса, потоковой передачи каждого изображения и обработки каждого http-заголовка. Вот тут-то все и становится сложнее.
Так, например, скажем, у меня есть URL, с которого загружается список обложек фильмов localhost/images/moviecovers/movietitle001.jpg
. Я настроил его так, чтобы каждое изображение загружалось из images.php , с остальной частью URL-адреса в качестве атрибутов. Таким образом, на самом деле очень легко найти полный список изображений, явных для HTTP-реферера localhost/media/movies/1
.
Я хочу упаковать и сгруппировать списки изображений, которые, как определено, часто вызываются с определенного реферера на сайте. Вероятно, я буду использовать для этого сеансы PHP, создав обработчик сеанса и манипулируя именами / идентификаторами / путями сеансов для организации. Я не проводил много контрольных тестов, но я считаю, что это эффективная система сортировки, с которой очень легко работать.
Это может позволить мне создать какую-то файловую структуру, например (с любой другой информацией, которая мне может понадобиться):
//Unique to referrer of /images/moviecovers/...
$_SESSION = array(
'image1'=>array(
'type'=>'jpg',
'modtime'=>filemtime(),
'content'=>raw_image_data
),
'image2'=>array(
'type'=>'png',
'modtime'=>filemtime(),
'content'=>raw_image_data
),
'image3'=>array(
'type'=>'gif',
'modtime'=>filemtime(),
'content'=>raw_image_data
),
...
);
В конечном счете, цель состоит в том, чтобы сделать так, чтобы мне нужно было открывать только 2-3 файла для большого списка изображений, но мне нужно выяснить, как я собираюсь сохранять эти отдельные файлы открытыми на протяжении всей загрузки клиента. Должно быть легко определить, когда необходимо запустить сеанс, но план не сработает, если мне придется продолжать запускать сеанс для каждого загружаемого изображения. Я даже не уверен, с чего начать обработку такого рода вещей в PHP, или если это вообще возможно. Мне не обязательно нужна помощь с дизайном / фреймворком, мне нужна помощь и идеи о том, как я собираюсь обслуживать каждый запрос.
Даже если это невозможно в PHP и поскольку все знают о моих планах, я также хотел бы получить несколько советов о том, почему это было бы или не было бы хорошей идеей. В конце концов, я мог бы попробовать сделать это в Node.У JS, который, я уверен, не возникнет проблем с обработкой такого рода вещей. Это одна из тех вещей, которые я хотел бы попробовать, но понятия не имею, смогу ли я увеличить скорость загрузки.
Комментарии:
1. Звучит как работа для phpfastcache.com
Ответ №1:
Насколько велики ваши необработанные данные изображения. Если он большой, все, что вы делаете, это обмениваете использование памяти на использование процессора.
Кроме того, вам может потребоваться беспокоиться о том, что PHP на 32-битных платформах может использовать только до 1,5 ГБ оперативной памяти на запрос. (если они не исправили это в более новых версиях).
Таким образом, это ограничит количество изображений, которые вы можете кэшировать в файле. Так что я действительно не думаю, что это хорошая идея.
С увеличением скорости жесткого диска и низкой стоимостью за гигабайт, в чем причина его кэширования?