User Tools

Site Tools


ru:new_rotation_faq

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ru:new_rotation_faq [2018/05/31 05:03]
admin [Как назначить разные категории разным тумбам одной гали]
ru:new_rotation_faq [2019/05/22 11:05] (current)
admin [User Thumbs]
Line 36: Line 36:
  
  
-===== Как сделать кастом галю из своего контента ​===== +===== Custom gallery with my local content ​=====
- +
-Пока есть тестовый вариант:​ +
-  * создать папку scj/​gallery/​upload/​1 (2, 3 и тп) +
-  * залить туда фотки\мувики названные 1.jpg,2.jpg и тп (1.avi, 2.avi)  +
-  * при импорте указать на месте URL в патерне написать не урл гали, а название папки , например 1 +
  
 +  - Залить куда угодно тумбы
 +  - при и импорте указать Image List = перечисление урлов картинок
 ===== Что такое Init cats в Rotation - Special или почему я добавил категорию в админке,​ а она не появилась на сайте ===== ===== Что такое Init cats в Rotation - Special или почему я добавил категорию в админке,​ а она не появилась на сайте =====
  
Line 56: Line 52:
 Время кеша задается в common.php CACHE_TIME, начиная с апдейта 46 время в common.php можно не указывать,​ а указывать в сетингах ротации. Обратите внмиание,​ что время указаннное в common.php имеет преимущество,​ те если указано в common.php то настройки ротации скрипт игнорирует. Время кеша задается в common.php CACHE_TIME, начиная с апдейта 46 время в common.php можно не указывать,​ а указывать в сетингах ротации. Обратите внмиание,​ что время указаннное в common.php имеет преимущество,​ те если указано в common.php то настройки ротации скрипт игнорирует.
  
-Дабы посомтреть какую-то страницу без кеша надо добавить в урле параметр skip_cache=true. Например,​ http://​domain.com/?​skip_cache=true+Дабы посмотреть какую-то страницу без кеша надо добавить в урле параметр skip_cache=true. Например,​ http://​domain.com/?​skip_cache=true
  
 Начиная с апдейта 46 появила recreate cookie - Rotation - Special - Recreate visited pages - скрипт ставит секретную куку вашему браузеру на 10 часов (можно снять куку в любой момент там же). Если вы зайдете с этой кукой на любую страницу вашего сайта, эта страница будет пересоздана (те сброшен кеш именно для этой страницы). Бывает полезно при изменении дизайна какой-то одной определенной страницы. ​ Начиная с апдейта 46 появила recreate cookie - Rotation - Special - Recreate visited pages - скрипт ставит секретную куку вашему браузеру на 10 часов (можно снять куку в любой момент там же). Если вы зайдете с этой кукой на любую страницу вашего сайта, эта страница будет пересоздана (те сброшен кеш именно для этой страницы). Бывает полезно при изменении дизайна какой-то одной определенной страницы. ​
  
-Те разница между skip_cache и recreate cookie ​ в том, что skip_cache покажет страницу без кеша только вам и все, а recreate cookie покажет страницу без кеша ​и такой какую вы ее видете положит в кеш и другие пользователи будут видеть ее из кеша в таком виде.+Те разница между skip_cache и recreate cookie ​ в том, что skip_cache покажет страницу без кеша только вам и все, а recreate cookie покажет страницу без кеша, потом ​такой какую вы ее видете положит в кеш и другие пользователи будут видеть ее из кеша в таком виде.
  
 Еще раз: страница создава в 00 минут. Время кеша 10 минут. в 05 вы меняете дизайн. Еще раз: страница создава в 00 минут. Время кеша 10 минут. в 05 вы меняете дизайн.
Line 158: Line 154:
  
 Есть несколько ньансов:​ Есть несколько ньансов:​
-  - файловый кеш не такой медленный как можно подумать. Смысл в том, что работа с ним эффективно кешируется системой и разница не глобальна, можно так же вероирть\поднять vnodes на серваке +  - файловый кеш не такой медленный как можно подумать. Смысл в том, что работа с ним эффективно кешируется системой и разница не глобальна 
-  - при этом кеш перманентно лежит на диске и в случае перегрузки сервера никуда не пропадет и скрипту не придется по новой генерить весь кеш по новой. Те ситуация такая: у нас много трафа, вдруг что-то пошло не так и мы перегружаем сервак. После поднятия сервака какая-то часть сайта уже есть в кеше и все продолжает работать,​ в случае же в мемкешем ​конечно ​весь кеш утерян и скрипту надо на лету создать массу страниц которые до этого лежалди в кеше, что опять создает нагрузку+  - при этом кеш перманентно лежит на диске и в случае перегрузки сервера никуда не пропадет и скрипту не придется по новой генерить весь кеш по новой. Те ситуация такая: у нас много трафа, вдруг что-то пошло не так и мы перегружаем сервак. После поднятия сервака какая-то часть сайта уже есть в кеше и все продолжает работать,​ в случае же в мемкешем весь кеш утерян и скрипту надо на лету создать массу страниц которые до этого лежали в кеше, что опять создает нагрузку
   - если вы все же ставите мемкеш - убедитесь,​ что ему выделено достаточно памяти. Сложно сказать конкретно сколько надо памяти,​ тк это прямо зависит от размера базы и веса шаблонов (в кеш кладет уже сгенерированную страницу,​ html), потому что как только законится доступная память - страницы будут генериться на лету.   - если вы все же ставите мемкеш - убедитесь,​ что ему выделено достаточно памяти. Сложно сказать конкретно сколько надо памяти,​ тк это прямо зависит от размера базы и веса шаблонов (в кеш кладет уже сгенерированную страницу,​ html), потому что как только законится доступная память - страницы будут генериться на лету.
-  - размер мемкеша должен быть достаточным,​ иначе данные будут "​выдавливаться"​ из кеша. Например у нас кеш 10 метров,​ и есть 10 записей по 1 метру. Добавление еще одного в кеш - выдавит первый из кеша. Проблема тут в том, что у мемкеша есть понятие фрагментации памяти,​ когда даные занимают в реальности больше,​ чем говорит статистика. Мемкеш сохраняет грубо говоря блоками. Для простоты понимания если блок 100 байт, а мы сохраняем 1 байт, то репортит оно что занят 1 байт, но в реальности оно занимает 100 байт. Для скрипта проблема в том, что если вытесняются какие то данные то никакой ошибки мемкеш не возвращает и обработать такую ситуацию в скрипте невозможно. Примерно наблюдение - 15% фрагментация. ​Те если мнеьше 15% свободно - скорее всего память уже закончилась. +  - размер мемкеша должен быть достаточным,​ иначе данные будут "​выдавливаться"​ из кеша. Например у нас кеш 10 метров,​ и есть 10 записей по 1 метру. Добавление еще одного в кеш - выдавит первый из кеша. Проблема тут в том, что у мемкеша есть понятие фрагментации памяти,​ когда даные занимают в реальности больше,​ чем говорит статистика. Мемкеш сохраняет грубо говоря блоками. Для простоты понимания если блок 100 байт, а мы сохраняем 1 байт, то репортит оно что занят 1 байт, но в реальности оно занимает 100 байт. Для скрипта проблема в том, что если вытесняются какие то данные то никакой ошибки мемкеш не возвращает и обработать такую ситуацию в скрипте невозможно. Примерно наблюдение - 15% фрагментация. ​
- +
-===== Почему rot.php выполняется так долго ===== +
- +
-Непосредственной работы там намного меньше конечно,​ однако в целях равномерного распределения нагрузки он работает минуту. Например,​ у нас стоит сграбить 3 галеры в минуту:​ скрипт грабит одну, спит 20 сек, грабит вторую - спист еще 20 сек, и грабит 3ю. Это помогает сделать нагрузку более равномерной. +
- +
  
 ===== Почему у меня в админке и на такой-то странице сайта тумбы стоят в разном порядке ===== ===== Почему у меня в админке и на такой-то странице сайта тумбы стоят в разном порядке =====
Line 189: Line 179:
 ===== Тумбы (галереи) не удаляются ===== ===== Тумбы (галереи) не удаляются =====
  
-  * до 46 была проблема при удалении большого кол-ва тумб, например у спонсора 10к тумб, вы удаляете спона, скрипт пыдается это удалить сразу, но не успевает - получается таймаут. Это усугубляется если надо удалить не просто тумбы, а кастом гали. +  * ранее ​была проблема при удалении большого кол-ва тумб, например у спонсора 10к тумб, вы удаляете спона, скрипт пыдается это удалить сразу, но не успевает - получается таймаут. Это усугубляется если надо удалить не просто тумбы, а кастом гали. 
-  * начиная с 46 тумбы удаляются по крону. Те когда вы жмете в админке "​удалить"​ тумбы не удаляются мгновенно,​ а переходят в статус '​Marked for deletion',​ раз в 10 минут крон смотрит есть ли такие и удаляет +  * сейчас тумбы удаляются по крону. Те когда вы жмете в админке "​удалить"​ тумбы не удаляются мгновенно,​ а переходят в статус '​Marked for deletion',​ раз в 10 минут крон смотрит есть ли такие и удаляет 
-  * если надо удалить "​прямо сейчас"​ - запускаем ​rot.php с параметром process_deleted=true  +  * если надо удалить "​прямо сейчас"​ - запускаем ​rotation.php с параметром process_deleted=true  
-  * <​code>​cd /​PATH_TO_/​scj/​bin/;​ env HTTP_HOST=yourdomain.com php rot.php process_deleted=true </​code>​+  * <​code>​cd /​PATH_TO_/​scj/​bin/;​ env HTTP_HOST=yourdomain.com php rotation.php process_deleted=true </​code>​
   * единственое исключение:​ если вы удаляете тумбы в Rotation - List thumbs и удаляется меньше 30 тумб - то удаление происходит сразу.   * единственое исключение:​ если вы удаляете тумбы в Rotation - List thumbs и удаляется меньше 30 тумб - то удаление происходит сразу.
  
Line 200: Line 190:
 ===== Сколько надо траффика чтобы отротировать тумбы ===== ===== Сколько надо траффика чтобы отротировать тумбы =====
  
-Не обязательно отротировать все до конца, чтобы прода быда хорошая,​ но в целом посчитать сколько надо трафа очень легко.+Не обязательно отротировать все до конца, чтобы прода была хорошая,​ но в целом посчитать сколько надо трафа очень легко.
  
 Тумба считается отротированной,​ когда ее показали New thumbs timelive раз , по дефолту 500. Тумба считается отротированной,​ когда ее показали New thumbs timelive раз , по дефолту 500.
Line 217: Line 207:
 Тумба категории - это по-дефолтлу лучшая тумба из категории. Однако,​ есть возможность поставить тумбой категории не лучшую,​ а например 2ю по ЦТР или 3ю и тп, эти настройки можно найти в Rotation - CMS - Settings. Тумба категории - это по-дефолтлу лучшая тумба из категории. Однако,​ есть возможность поставить тумбой категории не лучшую,​ а например 2ю по ЦТР или 3ю и тп, эти настройки можно найти в Rotation - CMS - Settings.
  
-===== How to turn a slave into a master =====+===== How to create ​a master ​site from a slave =====
  
   - Делаем дамп базы мастера   - Делаем дамп базы мастера
Line 301: Line 291:
 По опыту наиболее частой проблемой является несоблюдение ковычек. http://​smartcj.com/​wiki/​doku.php?​id=ru:​new_rotation_hints#​php_code_%D0%B2_%D1%82%D0%B5%D0%BC%D0%BF%D0%BB%D0%B5%D0%B9%D1%82%D0%B0%D1%85 По опыту наиболее частой проблемой является несоблюдение ковычек. http://​smartcj.com/​wiki/​doku.php?​id=ru:​new_rotation_hints#​php_code_%D0%B2_%D1%82%D0%B5%D0%BC%D0%BF%D0%BB%D0%B5%D0%B9%D1%82%D0%B0%D1%85
  
 +
 +===== Crop Profiles =====
 +
 +Это наборы параметров для обработки тумб. ​
 +
 +Если вам надо размер только по одной стороне,​ но вторую сторону ставим 0. Например,​ если указана ширина,​ а высота 0, то ширина будет фиксированной,​ а высота будет меняться под размер тумбы. Это актуально для сайтов типа пинтерест.
 +
 +Image Command - это команда которая применяется ДО того как сделана тумба. единственный параметр {FILE} - это текущая картинка. Например, ​
 +
 +  /​usr/​bin/​your_command -some_param {FILE}
 +
 +Thumb Command - аналогично только для уже сделанной тумбы.
 +
 +
 +Face Detect - см [[FaceDetect]]
 ===== How to grab custom galleries ===== ===== How to grab custom galleries =====
  
Line 325: Line 330:
  
  
-===== Group Deactivation =====+===== Group Deactivation ​(Group Exclusion) ​=====
  
 Допустим у нас есть мастер на котором группы А и Б. Мы подключаем слейв на котором деактивируем группу Б. При выборке для слейва у нас есть 2 варианта:​ Допустим у нас есть мастер на котором группы А и Б. Мы подключаем слейв на котором деактивируем группу Б. При выборке для слейва у нас есть 2 варианта:​
Line 332: Line 337:
   * или все галеры из группы А   * или все галеры из группы А
  
-на первый взгляд это одно и тоже. Однако если у нас галера состоит в обоих группах то в одном случае она попадет в выборку, ​в а другом нет.+на первый взгляд это одно и тоже. Однако если у нас галера состоит в обоих группах то в одном случае она попадет в выборку,​ а в другом нет. 
 + 
 +Поэтмоу в сетингах есть настройка Group Exclusion 
 + 
 +  - Hard = выборка идет как "​все галеры КРОМЕ группы Б" (те тут галера состоящая в обоих группах не попадает в выборку) 
 +  - Soft = выборка идет по 2му варианту,​ те "​все галеры из группы А" (те галера попадает в выборку)
  
-Дабы решить этот вопрос так, что бы можно было сделать оба варианта сайты скрипт работает так: 
  
-  - если НЕ указана ​категория то выборка идет как "все галеры КРОМЕ ​группы ​Б" (те тут галера состоящая в обоих группах не попадает в выборку) +Когда это ​надо: вариант hard - это когда у нас условно 3 группы: страйтгай и тин. на слейве мы хотим например только страйт. Понятно что серфер гай видеть вообще ​не хочет. Те тут ​жесткое исключение.
-  - если группа указана - то выборка идет ​по 2му вариантуте се галеры из группы А" (те галера попадает в выборку)+
  
-Что это значит в реальных условиях:​ если у вас жесткое разделение и галеры из деактивированных групп вообще не должны быть - это вариант 1. Если разделение не жесткое и допустимо такое попадание то можно даже не деактивировать,​ а просто в common.php дописать $_GET['​group_id'​] = ...; и будет постоянно включен лимит по группе. 
  
  
Line 509: Line 516:
 Обратите внимание,​ что в этом случае таг total_items будет показывать просто кол-во галер на текущей странице. Обратите внимание,​ что в этом случае таг total_items будет показывать просто кол-во галер на текущей странице.
  
 +===== User Thumbs =====
 +
 +Допустим у вас в импорте много тумб, но трафа что бы их отротировать все недостаточно (так бывает в большинстве случаев). Но хотелось бы оставить все тумбы для ролинга тумб. Для этого в импорте есть вариант с User Thumbs - смысл его в том, что указанные тумбы скачиваются,​ применяется кроп профайл,​ но в базе их нет, они сохраняются только на диске в каталог /​scj/​thumbs/​user_thumbs/​.
 +
 +  Те мы можем импортить как URL|THUMB_URL|USER_THUMBS
 +
 +Есть ньюанс - если в импорте нет возможности сделать 2 поля в тумбами,​ то можно импортить просто как URL|USER_THUMBS и How Many Thumbs from each gallery ?= Х. Таким образом все тумбы из этого поля будут сохранены на диск, а Х тумб будут добавлены в базу для ротации.
 +
 +Таким образом база не растет и не надо ротировать лишние тумбы.
 +
 +При этом надо понимать,​ что скрипт ничего не знает про тумбы которые сохранены в user_thumbs,​ поэтому для роллинга тумб у вас есть 2 варианта. Либо для каждой галеры кол-во тумб должно быть одинаковым,​ либо при роллинге скрипт ​ должен делать preload тумб для роллинга и таким образом понимать сколько их там всего.
 +
 +В темплейте урл к каталогу с юзер тумбами для данной галеры можно получить тагом ​
 +
 +  <​!--USER_THUMBS_FOLDER-->​
 +  ​
 +  ​
 +  ​
 +===== Filter request parameters =====
 +
 +Например,​ у вас сайт на английском и есть форма поиска,​ куда люди вписывают поисковые запросы на сайте. Лог поисковых запросов выводится где-то на сайте. Часть людей пытаются искать например на русском и это выводится в логах запросов,​ а вы не хотели бы что б бы это было видно. Можно неугодные символы фильтровать на этапе запроса. ​
 +
 +Добавляем в common.php
 +
 +
 +  if (isset($_GET['​search'​])) $_GET['​search'​] = preg_replace('​|[^a-z,​0-9]|is','',​$_GET['​search'​]);​
 +  ​
 +  ​
 +и это будут только латинские символы  ​
 ===== Multiniche trade ===== ===== Multiniche trade =====
  
Line 552: Line 588:
  
  
 +
 +====== Custom gallery URL Refresh ======
 +
 +Классический урл выглядит примерно как http://​domain/​gallery/​asd.html что через реврайт получается как out.php?​url=content&​slug=asd,​ при этом скиминг берется из дефолтного или может быть задан в реврайте,​ главное что при рефреше страницы галеры может средиректить на трейдера.
 +
 +Автоматически избежать этого невозможно тк рефреш - это когда браузер посылает точно такой же запрос и отличить на стороне скрипта никак нельзя.
 +
 +В целом я не считаю это проблемой тк рефрешит галеру только сам вебмастер в процессе дизайна,​ но если вы хотите этого избежать то можно добавить в страницу код, который будет выполняться при нажатии рефреш
 +
 +https://​stackoverflow.com/​questions/​18457797/​how-to-know-whether-refresh-button-or-browser-back-button-is-clicked-in-firefox
 +
 +вместо alert("​refresh button is clicked"​);​ можно поставить свой код который будет редиректить например на http://​domain/​gallery_PERMANENT/​asd.html , а в реврайтах добавить gallery_PERMANENT который будет делать урл с &​p=100 ​
  
 ====== Site Internationalisation (i18n) ====== ====== Site Internationalisation (i18n) ======
ru/new_rotation_faq.1527742981.txt.gz · Last modified: 2018/05/31 05:03 by admin