Your SlideShare is downloading. ×
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Загрузка, обработка, хранение и отдача статики

1,154

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,154
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Хранение, обработка и отдача статики Мокевнин Кирилл, undev.ru
  • 2. Хранение загруженных файлов Хранилище: • Локальная файловая система. • База данных. • NFS. • Amazon S3. • Webdav. Организация файлов в локальной ФС: • Соглашения. • Общий подход.
  • 3. WEBDAV - это современный и защищённый сетевой протокол высокого уровня, работающий поверх HTTP для доступа к объектам и коллекциям объектов. • Выполнение основных файловых операций над объектами на удаленном сервере. • ngx_http_dav_module или mod_dav. • Для использования в ZF - Zend_Http_Client.
  • 4. Сервера и их взаимодействие
  • 5. Сервера и их взаимодействие
  • 6. Сервера и их взаимодействие • Один сервер -> VPS -> Кластер. • Storage хранит только исходники картинок. • На storage серверах стоит nginx с модулем ngx_http_dav_module. • Create_full_put_path on. • Webdav используется только для загрузки картинок на storage.
  • 7. Организация хранилища (пути), взаимодействие с базой и связь с сущностями приложения. Загрузка
  • 8. Загрузка файлов • Для каждого файла своя запись в таблице. • is_deleted и is_ready для отложенной обработки. • На основе id генерируется путь 161/374/000473161 до файла на storage сервере. • Каждая сущность в базе, имеющая файл(ы), связывается с id файла.
  • 9. Формирование урлов, конфигурация превью картинок. Отдача файлов
  • 10. Отдача файлов Конфигурационный файл с типами картинок и настройками для ресайза, картинка по умолчанию (заглушка). [user_avatar] resize.big.OutputFileFormat = jpg resize.big.width = 236 resize.big.height = 177 resize.medium.keepFrame = true resize.medium.width = 144 resize.medium.height = 108
  • 11. Отдача файлов View Helper для генерации ссылок. $this->image($avatar_file_id, 'user_avatar', 'big') • http://static.starlook.ru/sets-medium-947826- 4fc400fb-image.jpg • HTTP_UrlSigner (dklab.ru) • Если avatar_file_id == null, то возвращает путь на заглушку.
  • 12. Устройство ресайзера. Кеширование.
  • 13. Устройство ресайзера. Кеширование. • Кеширует nginx, ресайзит php. • Кешируем на клиенте навсегда. • В скрипте ресайзера не нужно поднимать bootstrap ZF). • В nginx нужно разделять пулы коннектов для отдачи из кеша и ресайза. • Благодаря цифровому подписыванию ресайзит только в разрешенные размеры.
  • 14. Собирая все вместе • Создание записи в базе при загрузке картинки и перемещение исходного файла в необходимую директорию. • Файл конфигурации. • Вью хелпер для урлов. • Скрипт для генерации картинок (с кешированием).
  • 15. Загрузка файлов $client = new Ext_Webdav_Client($connect_params); $adapter = new Ext_File_Adapter_Webdav(); $adapter->setClient($adapter); $transfer = new Ext_File_Transfer(); $transfer->setAdapter($adapter); Ext_Form_Element_File::setTransfer($transfer); return $transfer;
  • 16. Загрузка файлов public function configure(Ext_File $file) { $table = new File(); $row = $table->createRow(); list($row->width, $row->height) = getimagesize($file->getFilePath()); $row->save(); $this->getAdapter()->setUri($this- >generateUri($row->id)); return $row;
  • 17. Загрузка файлов $element = new Ext_Form_Element_File('files'); $element->setIsArray(true); $element->setConfigurator(new File_Configurator_WebdavDb()); $value = $element->getValue(); foreach ($value as $row) { // processing }
  • 18. Спасибо за внимание! E-mail: mokevnin@gmail.com Блог: www.wddx.ru twitter.com/mokevnin

×