Sharder: различия между версиями

Материал из CMS Sitebill Wiki
Перейти к навигации Перейти к поиску
(Новая страница: «Sharder – приложение<br> Приложение призвано сохранять картинки не на локальном диске хости…»)
 
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
 
Sharder – приложение<br>
 
Sharder – приложение<br>
 +
 +
Для хранения файлов в облаке Яндекс-S3 вам необходимо зарегистрироваться по этой ссылке: [https://console.cloud.yandex.ru?referralCode=dn260nj494roht0mkce4 https://console.cloud.yandex.ru]
 +
 
Приложение призвано сохранять картинки не на локальном диске хостинга внутри папки сайта, а на удаленном сервере.<br>
 
Приложение призвано сохранять картинки не на локальном диске хостинга внутри папки сайта, а на удаленном сервере.<br>
 
На некоторых сайтах сейчас скопилось до 200 Гб картинок, поэтому назрел вопрос как их разделять по разным хранилищам.<br>
 
На некоторых сайтах сейчас скопилось до 200 Гб картинок, поэтому назрел вопрос как их разделять по разным хранилищам.<br>
 
В процессе обработки и сохранения поля uploads сначала картинки сохраняются как раньше в папку /img/data/. Это нужно чтобы они правильно ресайзились, переворачивались и накладывались водяные знаки.<br>
 
В процессе обработки и сохранения поля uploads сначала картинки сохраняются как раньше в папку /img/data/. Это нужно чтобы они правильно ресайзились, переворачивались и накладывались водяные знаки.<br>
 
Но после всех обработок, если включено приложение apps.sharding.enable тогда массив картинок передается на обработку классу<br>
 
Но после всех обработок, если включено приложение apps.sharding.enable тогда массив картинок передается на обработку классу<br>
$result = $this->sharder->shard($files, $this->getServerFullUrl(true));<br>
+
<nowiki>
 +
$result = $this->sharder->shard($files, $this->getServerFullUrl(true));
 +
</nowiki>
 +
<br>
 
<br>
 
<br>
 
Эта процедура загружает файлы на удаленный сервер и в ответ получает URL адреса загруженных файлов.<br>
 
Эта процедура загружает файлы на удаленный сервер и в ответ получает URL адреса загруженных файлов.<br>
 
Затем выполняется запаковка uploads поля, но теперь название каждого файла это URL-картинки. Также добавляется признак remote = ‘true’ чтобы в шаблонах и других приложениях было понятно что это не локальные картинки, а URL-адреса картинок.<br>
 
Затем выполняется запаковка uploads поля, но теперь название каждого файла это URL-картинки. Также добавляется признак remote = ‘true’ чтобы в шаблонах и других приложениях было понятно что это не локальные картинки, а URL-адреса картинок.<br>
array('preview' => $preview_url, 'normal' => $normal_url, 'type' => 'graphic', 'mime' => $ext, 'remote' =>  ‘true’);<br>
+
<nowiki>
<br>
+
array('preview' => $preview_url, 'normal' => $normal_url, 'type' => 'graphic', 'mime' => $ext, 'remote' =>  ‘true’);
 +
</nowiki>
 +
<br>
 
Теперь при выводе в шаблонах нужно выполнять проверку признака remote, чтобы вместо формирования относительного пути, просто выдавать ее в чистом виде.
 
Теперь при выводе в шаблонах нужно выполнять проверку признака remote, чтобы вместо формирования относительного пути, просто выдавать ее в чистом виде.
 
Пример вывода картинок в шаблоне<br>
 
Пример вывода картинок в шаблоне<br>
<img src="{if $photoitem.remote}{$photoitem.normal}{else}{$estate_folder}/img/data/{$photoitem.normal}{/if}" /><br>
+
<nowiki>
 +
<img src="{if $photoitem.remote}{$photoitem.normal}{else}{$estate_folder}/img/data/{$photoitem.normal}{/if}" />
 +
</nowiki>
 +
<br>
  
 
Для миграции картинок из локального хранилища на шарды есть скрипт<br>
 
Для миграции картинок из локального хранилища на шарды есть скрипт<br>
/apps/sharder/cron.php?cron_key=XXX<br>
+
'''/apps/sharder/cron.php?cron_key=XXX'''<br>
 
Он загружает по N-записей и отправляет локальные файлы на удаленный сервер, заменяет uploads массив и затем удаляет локальные файлы. После каждого запуска порция записей отмечается как обработанная data.sharded = 1<br>
 
Он загружает по N-записей и отправляет локальные файлы на удаленный сервер, заменяет uploads массив и затем удаляет локальные файлы. После каждого запуска порция записей отмечается как обработанная data.sharded = 1<br>
 
Необходимо переделать способ вывода картинок в приложениях, которые используют картинки – выгрузки, например. Анализировать признак remote=’true’ <br>
 
Необходимо переделать способ вывода картинок в приложениях, которые используют картинки – выгрузки, например. Анализировать признак remote=’true’ <br>

Текущая версия на 13:17, 16 декабря 2022

Sharder – приложение

Для хранения файлов в облаке Яндекс-S3 вам необходимо зарегистрироваться по этой ссылке: https://console.cloud.yandex.ru

Приложение призвано сохранять картинки не на локальном диске хостинга внутри папки сайта, а на удаленном сервере.
На некоторых сайтах сейчас скопилось до 200 Гб картинок, поэтому назрел вопрос как их разделять по разным хранилищам.
В процессе обработки и сохранения поля uploads сначала картинки сохраняются как раньше в папку /img/data/. Это нужно чтобы они правильно ресайзились, переворачивались и накладывались водяные знаки.
Но после всех обработок, если включено приложение apps.sharding.enable тогда массив картинок передается на обработку классу
$result = $this->sharder->shard($files, $this->getServerFullUrl(true));

Эта процедура загружает файлы на удаленный сервер и в ответ получает URL адреса загруженных файлов.
Затем выполняется запаковка uploads поля, но теперь название каждого файла это URL-картинки. Также добавляется признак remote = ‘true’ чтобы в шаблонах и других приложениях было понятно что это не локальные картинки, а URL-адреса картинок.
array('preview' => $preview_url, 'normal' => $normal_url, 'type' => 'graphic', 'mime' => $ext, 'remote' => ‘true’);
Теперь при выводе в шаблонах нужно выполнять проверку признака remote, чтобы вместо формирования относительного пути, просто выдавать ее в чистом виде. Пример вывода картинок в шаблоне
<img src="{if $photoitem.remote}{$photoitem.normal}{else}{$estate_folder}/img/data/{$photoitem.normal}{/if}" />

Для миграции картинок из локального хранилища на шарды есть скрипт
/apps/sharder/cron.php?cron_key=XXX
Он загружает по N-записей и отправляет локальные файлы на удаленный сервер, заменяет uploads массив и затем удаляет локальные файлы. После каждого запуска порция записей отмечается как обработанная data.sharded = 1
Необходимо переделать способ вывода картинок в приложениях, которые используют картинки – выгрузки, например. Анализировать признак remote=’true’