Блог

Сергей Сенаторов

Name: Sergey Senatorov

FullStack developer

Блог Сергея Сенаторова

Что выбрать sphinx или elasticsearch

Дата публикации: 30.07.2019
Метки: elasticsearch, mysql, php, server, sphinx, блог

Некоторые не знают что выбрать sphinx или elasticsearch, есть даже разные сравнения, но на мой взгляд такое сравнение делать неправильно, эти продукты решают задачи на принципиально разных уровнях.

Основное отличие заключается в том, что sphinx – это поисковый движок, а elasticsearch – это уже сервис поверх поискового движка, эдакая надстройка над apache lucene. Сравнение lucene и sphinx было бы проводить намного правильней, но в этой заметке такого сравнения не будет.

С точки зрения разработчика вы можете выбрать как одно, так и другое. Sphinx легковесный быстрый движок, имеет свой sql подобный язык, которым удобно пользоваться в консольном режиме.

Подключиться и просмотреть индекс по словоформе можно примерно таким образом:

mysql -h 127.0.0.1 -P 9306
select id from index where match('школ'); show meta;
select where id => 234234

Elasticsearch имеет много разных плагинов и возможности для интеграции, а также предоставляет удобное RESTful api, через которое можно делать все необходимые операции (индексировать, конфигурировать, обновлять, удалять, получать).

Конейнер с elasticesearch можно поднять в docker-compose, например вот так:

elasticsearch:
  image: elasticsearch:6.5.4
  #command: elasticsearch -Des.network.host=0.0.0.0
  ports:
    - "9200:9200"
    - "9300:9300"

Читать запись полностью »

Docker: быстрый запуск контейнеров

Дата публикации: 30.07.2019
Метки: mysql, nginx, php, php-fpm, redis, server, блог

Один из вариантов простого запуска контейнеров – использовать docker-compose. Чтобы он заработал его нужно дополнительно установить из пакетов. В установках на Windows и Mac он уже изначально включен в поставку.

Достаточно описать yml файл и запустить его. В интернете можно найти большое количество готовых файлов по запросу ‘docker compose’. Эти файлы помогают комбинировать отдельные контейнеры в окружения под ваш проект. Допустим, вам для проекта необходимо поднять связку: nginx, php-fpm, elasticsearch, rabbit, memcache – все это можно реализовать в одном docker-compose файле и запускать, что называется, «в один клик».

Небольшой список базовых команд, которые вам могут пригодиться:

Собрать и запустить контейнер в фоновом режиме с помощью docker-compose

docker-compose up --build -d

Читать запись полностью »

Простой редирект с устройств Ipad, Iphone, Android

Дата публикации: 30.07.2019
Метки: php, блог
Простой редирект с использованием регулярки.
$data = [
    'iphone' => '/iphonepage.php',
    'android' => '/androidpage.php',
    'defaultlink' => '/404.php'
];
preg_match('/Android|iPhone|iPad|defaultLink/', $_SERVER['HTTP_USER_AGENT'].'defaultLink', $matches);
header("Location: ".$data[strtolower($matches[0])]);

Ссылки на сайт с удаленного сервера ?

Дата публикации: 13.10.2009
Метки: bitrix, mysql, запросы, оптимизация

Иногда количество медиа контента который тянется с тестовой копии достаточно большой. В таком случае на локальной копии имеет смысл заменить ссылки на сайт с удаленного сервера.
Для Apache это можно зделать следующим образом:

Правила для .htaccess
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://yoursite.ru/$1 [R,NC,L]

Проблема которая может возникнуть в таком случае это ресайз изображения. Система будет проверять их физическое наличие. Иногда это бывает важно. Чтобы изображения подтягивались уже отресайзеные, можно заменить условие в ядре. В таком случае мы убираем проверку на физическое наличие файла и ссылка идет уже на изображение с ресайзом.

/bitrix/modules/main/classes/general/file.php:1552 //elseif (!file_exists($io->GetPhysicalName($_SERVER["DOCUMENT_ROOT"].$cacheImageFileCheck)))

Либо чтобы избавится от исправлений внутри ядра, можно обернуть ресайз в него и добавить условие там. Как реализовать, решать вам.

Замена данных в mysql

Дата публикации: 13.10.2009
Метки: bitrix, mysql, запросы, оптимизация
Выбрать дубли и заменить https на https:
select CODE, COUNT(ID) as  CNT, GROUP_CONCAT(ID) as ID_LIST
FROM yourtable 
WHERE IBLOCK_ID = 11 GROUP BY CODE HAVING CNT > 1 LIMIT 10
#Заменить 7 на +7
UPDATE yourtable SET `PERSONAL_MOBILE` = CONCAT( '+', `PERSONAL_MOBILE`) WHERE PERSONAL_MOBILE LIKE "7%"
#Заменить 8 на +7
UPDATE yourtable SET `PERSONAL_MOBILE` = CONCAT( '+7', RIGHT(PERSONAL_MOBILE, LENGTH(PERSONAL_MOBILE) - 1)) WHERE PERSONAL_MOBILE LIKE "8%"
  • Страница 1 из 2
  • 1
  • 2