Writing /home/user/smartcj.com/wiki/data/cache/8/8c77fa4733ea812737d678e97cc2197a.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/user/smartcj.com/wiki/data/cache/8/8c77fa4733ea812737d678e97cc2197a.metadata failed
ru:new_rotation_faq
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| ru:new_rotation_faq [2021/11/25 11:58] – [eval()'d code] admin | ru:new_rotation_faq [2026/02/24 23:58] (current) – [Filter request parameters] admin | ||
|---|---|---|---|
| Line 183: | Line 183: | ||
| - | ===== Почему у меня на старнице пустое облако тагов ===== | + | ===== Почему у меня на странице пустое облако тагов ===== |
| Облако тагов генерится из активных тагов раз в 30 минут и кладется в кеш. Соответственно варианты: | Облако тагов генерится из активных тагов раз в 30 минут и кладется в кеш. Соответственно варианты: | ||
| Line 240: | Line 240: | ||
| - Смотрим в rot_linked_db номер слейва, | - Смотрим в rot_linked_db номер слейва, | ||
| - Отсоединяем нужный слейв от мастера | - Отсоединяем нужный слейв от мастера | ||
| - | - Заливаем в базу бывшего слева (дамп) из пункта 1, но только таблицы | + | - Заливаем в базу бывшего слева (дамп) из пункта 1, но только таблицы |
| - | - Удаляем все rot_gallery_stats* кроме номера | + | - rot_gallery_statsХ переименовываем в rot_gallery_stats1, rot_gallery_dataX |
| - | - rot_gallery_statsХ переименовываем в rot_gallery_stats1 | + | |
| - | | + | |
| Line 270: | Line 269: | ||
| + | ===== Category statuses ===== | ||
| + | |||
| + | У категорий 3 статуса: | ||
| + | |||
| + | - активна - выводится в < | ||
| + | - не актвна - не выводится в < | ||
| + | - hidden - **не выводится** в < | ||
| ===== Как импортировать очень большой дамп ===== | ===== Как импортировать очень большой дамп ===== | ||
| Версия 2.* умеет добавлять большие файлы через importset самостоятельно (теоретически любого размера). Просто добавляете урл и он постепенно все добавит. | Версия 2.* умеет добавлять большие файлы через importset самостоятельно (теоретически любого размера). Просто добавляете урл и он постепенно все добавит. | ||
| - | |||
| - | Для версии 1.* рекомендуется следующий вариант: | ||
| - | |||
| - | Например у нас есть задача импортировать много тысяч галерей, | ||
| - | |||
| - | Дабы импортировать большой файл равномерно и хорошо для сервака надо: | ||
| - | |||
| - | * Создать и залить на сервак файл cut.php следующего содержимого | ||
| - | |||
| - | < | ||
| - | |||
| - | <?php | ||
| - | |||
| - | error_reporting(E_ALL & ~E_NOTICE); | ||
| - | |||
| - | if (!$_GET[' | ||
| - | if (!file_exists($_GET[' | ||
| - | if (!is_writeable($_GET[' | ||
| - | |||
| - | if (!file_exists(' | ||
| - | |||
| - | echo passthru(" | ||
| - | if (!$_GET[' | ||
| - | |||
| - | </ | ||
| - | |||
| - | * Залить туда же дамп и поставить 666 на этот файл | ||
| - | * Залить туда же пустой файл tmp.file и так же 666 на него | ||
| - | * Добавить ImportSet с урлом http:// | ||
| - | * Нажать Test и распределить поля как надо. | ||
| - | * cut.php выдает по 500 строк из большого дампа и урезает файл на эти же 500 строк. Таким образом каждый раз когда импортсет будет запрашивать новые строки - он будет получать по 500 строк, равномерно добавляя их в базу. | ||
| - | * Наличие & | ||
| - | |||
| - | Все. | ||
| - | |||
| - | Через какое-то время весь дамп будет добавлен и сам файл дампа станет нулевым по размеру и даже если вы забудете убрать его из импортсетов он будет выдавать пустой ответ и не будет нагружать сервер. | ||
| - | |||
| Line 575: | Line 544: | ||
| Так же есть опция "Log empty search queries " и если по запросу ничео не найдено то логгить его не будет. | Так же есть опция "Log empty search queries " и если по запросу ничео не найдено то логгить его не будет. | ||
| + | |||
| + | |||
| + | После апдейта в настройка ротации добавлена опция которая делает тоже самое | ||
| + | |||
| + | < | ||
| + | Search query filter pattern (regexp) | ||
| + | we use php preg-replace function to replace non-valid characters in user input | ||
| + | ie when a surfer searches on your site | ||
| + | a good pattern to start is | ||
| + | / | ||
| + | |||
| + | </ | ||
| ===== Multiniche trade ===== | ===== Multiniche trade ===== | ||
| Line 654: | Line 635: | ||
| ===== Site menu ===== | ===== Site menu ===== | ||
| - | Довольно просто сделать перевод меню сайта (те ссылок типа Most Popular, Order By date и прочее) на другие языки. | + | Довольно просто сделать перевод меню сайта (те ссылок типа Most Popular, Order By date и прочее) на другие языки. |
| + | |||
| + | |||
| + | Rotation - CMS - TPL Custom Vars создаем переменную most_popular, | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ====== Case Sensitive URLs ====== | ||
| + | |||
| + | По стандарту урлы - case sensitive, те большая или маленькая буква - имеет значение. Однако, | ||
| + | |||
| + | Однако бывает, | ||
| + | |||
| + | ALTER TABLE `rot_gallery_info` CHANGE `url` `url` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL; | ||
| + | ALTER TABLE `rot_gallery_info` CHANGE `source_url` `source_url` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL; | ||
| + | |||
| + | и помнить что после этого урлы из примера выше станут разными и при поиске урла надо будет смотреть на регистр букв. | ||
| + | |||
| + | |||
| + | ====== How to move thumbs ====== | ||
| + | |||
| + | По умолчанию тумбы сохраняются в / | ||
| + | |||
| + | - физически переместить тумбы из scj/thumb в новое место | ||
| + | - сменить URL to thumbs в CJ settings - grabber settings | ||
| + | |||
| + | ====== Full page cache ====== | ||
| + | |||
| + | Для высоконагруженных сайтов значительно помогает кешить страницы в уже выполненном виде. Например, | ||
| - | 1. Делаем кастом темплейт например languages в котором будет код слов | ||
| < | < | ||
| - | <? | ||
| - | $my_keywords[' | ||
| - | ' | ||
| - | ' | ||
| - | и так далее | ||
| - | ); | ||
| - | $my_keywords[' | ||
| - | ' | ||
| - | ' | ||
| - | и так далее | ||
| - | ); | ||
| - | $my_keywords[' | + | <thumb num=1-2> |
| - | ' | + | < |
| - | ' | + | </thumb> |
| - | и так далее | + | |
| - | ); | + | |
| - | и так далее сколько угодно языков | + | <?php |
| + | echo "date: " . date(" | ||
| + | ?> | ||
| - | далее 2 варианта подставления языка: | + | </ |
| - | по языку браузера | ||
| - | if (strstr($_SERVER[' | + | Скрипт парсит темплейт и заменяет данными из базы и кладет в кеш, что б для следующего серфера, который будет смотреть эту же страницу уже не заменять таги скрипта |
| - | $lang = $my_keywords[' | + | |
| - | } elseif (strstr($_SERVER[' | + | |
| - | $lang = $my_keywords[' | + | |
| - | } else $lang = $my_keywords[' | + | |
| - | или по geo_ip | + | < |
| - | if ($_SERVER[' | + | / |
| - | $lang = $my_keywords[' | + | / |
| - | } elseif ($_SERVER[' | + | |
| - | $lang = $my_keywords[' | + | |
| - | } else $lang = $my_keywords[' | + | |
| + | <?php | ||
| + | echo "date: " . date(" | ||
| + | ?> | ||
| - | надеюсь в обоих примерах понятно как добавить больше языков | + | </ |
| - | и в конце темпелйта | ||
| - | if ($_GET[' | + | при этом пхп код кешится в исходном виде. Те для каждого серфера этот пхп код будет выполняться. |
| - | | + | |
| - | $lang = $my_keywords[$_GET[' | + | В большинстве случаев это мелочи по нагрузке, однако при большом трафе, когда надо снизить нагрузку на проц, можно кешировать и пхп код, те страница будет закешена уже с выполненном виде, например |
| - | } elseif ($_COOKIE[' | + | |
| - | $lang = $my_keywords[$_COOKIE[' | + | < |
| - | } else $lang = $my_keywords[' | + | |
| + | / | ||
| + | / | ||
| + | |||
| + | date: 2023-01-01 | ||
| - | Все, конец темплейта :) | ||
| </ | </ | ||
| - | 2. во всех темпелйтах где надо будут разные языки инклудим этот созданный | + | |
| + | В большинстве случаев - это ок, тк результат выполнения кода одинаковый для всех серферов. | ||
| + | |||
| + | Однако бывают редкие ситуации когда в темплейте есть код, который должен быть выполнен для каждого юзера тк зависит например от текущего IP пользователя. Для этого есть опция | ||
| + | |||
| + | $config[' | ||
| + | |||
| + | |||
| + | В этом случае в темплейте можно использовать таг | ||
| < | < | ||
| - | <!--INCLUDE_TEMPLATE_languages--> | + | <php_code no_cache=true> |
| + | <?php | ||
| + | echo "user IP: " . $_SERVER[' | ||
| + | ?> | ||
| + | </ | ||
| </ | </ | ||
| + | и именно этот код не будет закеширован. | ||
| + | |||
| + | |||
| + | Например темплейт | ||
| - | 3. В темпелейтах соответствующие слова заменяем на переменные, | ||
| < | < | ||
| - | Most popular меняем на <?=$lang[' | + | |
| - | Order By Date меняем на <?=$lang['order_by_date' | + | <thumb num=1-2> |
| - | и так далее | + | < |
| + | </ | ||
| + | |||
| + | <?php | ||
| + | echo "Rand: " . rand(0, 100); | ||
| + | ?> | ||
| + | |||
| + | < | ||
| + | <?php | ||
| + | echo "user IP: " . $_SERVER['REMOTE_ADDR']; | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| </ | </ | ||
| - | с этого момента | + | будет закешен как |
| - | 4. даем юзеру возможность переключить язык " | ||
| < | < | ||
| - | для этого ставим линку вида | ||
| - | http://domain/? | + | /thumbs/img1.jpg |
| + | /thumbs/ | ||
| + | |||
| + | Rand: 22 | ||
| + | |||
| + | <?php | ||
| + | echo "user IP: " . $_SERVER['REMOTE_ADDR']; | ||
| + | |||
| + | // а тут пхп код в исходном виде и будет выполнен для каждого серфера | ||
| + | |||
| + | ?> | ||
| </ | </ | ||
| - | Все. | ||
| + | Надо что надо обратить внимание при изменении темплейта под full_page_cache. Например, | ||
| + | < | ||
| + | <?php | ||
| + | $img_src_hash = md5($_SERVER[' | ||
| + | ?> | ||
| + | < | ||
| - | ====== Case Sensitive URLs ====== | + | some more HTML |
| - | По стандарту урлы - case sensitive, те большая или маленькая буква - имеет значение. Однако, | + | </code> |
| - | Однако | + | закешировать полностью мы не можем |
| - | | + | < |
| - | | + | |
| + | < | ||
| + | <?php | ||
| + | $img_src_hash = md5($_SERVER[' | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | |||
| + | < | ||
| + | |||
| + | some more HTML | ||
| + | |||
| + | </ | ||
| + | |||
| + | однако тут надо обратить внимание на то, что get_img.php? | ||
| + | |||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | <?php | ||
| + | $img_src_hash = md5($_SERVER[' | ||
| + | ?> | ||
| + | |||
| + | < | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | some more HTML | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | **Вероятные ошибки** | ||
| + | |||
| + | Нельзя | ||
| + | |||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | <?php | ||
| + | $img_src_hash = md5($_SERVER[' | ||
| + | ?> | ||
| + | |||
| + | some HTML | ||
| + | |||
| + | < | ||
| + | |||
| + | Another code | ||
| + | |||
| + | </ | ||
| + | |||
| + | more HTML | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | some more HTML | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | В этом случае это очевидно, | ||
| + | |||
| + | |||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | <?php | ||
| + | $img_src_hash = md5($_SERVER[' | ||
| + | ?> | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | < | ||
| + | |||
| + | some more HTML | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | в том темплейте который вы инклудите - так же есть < | ||
| + | |||
| + | |||
| + | ====== GET variables pass-through ====== | ||
| + | |||
| + | Например, | ||
| + | |||
| + | http:// | ||
| | | ||
| - | и помнить что | + | вы хотите этот param вывести где на странице что бы получилось например |
| + | |||
| + | <img src=' | ||
| + | |||
| + | все | ||
| + | |||
| + | <img src=' | ||
| + | |||
| + | GET_param - будет заменен на актуальное значение | ||
| + | |||
| + | ====== Reset Models | ||
| + | |||
| + | Если у вас уже есть база галер, скажем в описаниях галер есть | ||
| + | |||
| + | Задача назначить модели галерам (Rotation - special - Reset models) | ||
| + | |||
| + | Поиск имени модели идет через встроенный | ||
| + | |||
| + | Есть 3 варианта | ||
| + | |||
| + | 1. Просто mysql - ищем по " имя_модели ". тут важно отметить 2 пробела, потому что имя модели например Ola может быть частью ebola например. Проблема в то, что в дефолтной версии mysql не умеет искать даже в с учетом | ||
| + | |||
| + | 2. Mysql fulltext - этот поиск уже умеет искать с учетом больших букв | ||
| + | |||
| + | 3. Sphinx умеет искать с учетом регистра и даже разных окончаний | ||
| + | |||
| + | Поэтому если вам надо более качественное назначение моделей + более качественный поиск в целом, надо как минимум включать mysql fulltext | ||
ru/new_rotation_faq.1637841496.txt.gz · Last modified: by admin
