Как установить Sphinx на битрикс?
нашел на https://beget.com/ru/articles/sphinx_bitrix инструкции, но в разделе «Далее необходимо скопировать конфигурационный файл, представленный на странице настройки, удалив из него строку «infix_fields=». Затем нажать «Применить» сохранив настройки.»
не удается выполнить сохранение, возникает ошибка «Ошибка подключения к серверу Sphinx:
Ошибка подключения (Connection refused). »
-
Вопрос заданболее трёх лет назад
-
3890 просмотров
Пользователь 44828
Эксперт
Сообщений: 1132
Баллов: 198
Авторитет:
0
Рейтинг пользователя:
2
Регистрация: 01.07.2009
два сайта на одном сервере(лицензии разные)
сфикс установлен — на одном сайте подключен, работает
для вторго создаю 2 индекс в конфиге
в настройках модуля выбираю использовать сфинкс, указываю новый индекс и получаю ошибку
Код |
---|
Ошибка подключения к серверу Sphinx: Указанный индекс не найден. |
вот полный конфиг
Код |
---|
indexer { mem_limit = 32M } searchd { listen = 127.0.0.1:9312 listen = 9306:mysql41 log = /var/log/sphinx/searchd.log query_log = /var/log/sphinx/query.log read_timeout = 5 max_children = 30 pid_file = /var/run/sphinx/searchd.pid max_matches = 1000 seamless_rotate = 1 preopen_indexes = 1 unlink_old = 1 workers = threads # for RT to work binlog_path = /var/lib/sphinx } source art { type = mysql sql_host = localhost sql_user = ****** sql_pass = ******* sql_db = ****** sql_port = 3306 # optional, default is 3306 sql_query_pre = SET NAMES utf8 sql_query_pre = SET CHARACTER SET utf8 sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents sql_attr_uint = group_id sql_attr_timestamp = date_added sql_ranged_throttle = 0 sql_query_info = SELECT * FROM documents WHERE id=$id } source trv { type = mysql sql_host = localhost sql_user = **** sql_pass = **** sql_db = **** sql_port = 3306 # optional, default is 3306 sql_query_pre = SET NAMES utf8 sql_query_pre = SET CHARACTER SET utf8 sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents sql_attr_uint = group_id sql_attr_timestamp = date_added sql_ranged_throttle = 0 sql_query_info = SELECT * FROM documents WHERE id=$id } index bitrix_art { #main settings source = art type = rt path = /var/lib/sphinx/bitrix_art docinfo = inline morphology = stem_enru, soundex dict = keywords prefix_fields = title infix_fields= min_prefix_len = 2 enable_star = 1 rt_field = title rt_field = body rt_attr_uint = module_id rt_attr_string = module rt_attr_uint = item_id rt_attr_string = item rt_attr_uint = param1_id rt_attr_string = param1 rt_attr_uint = param2_id rt_attr_string = param2 rt_attr_timestamp = date_change rt_attr_timestamp = date_to rt_attr_timestamp = date_from rt_attr_uint = custom_rank rt_attr_multi = tags rt_attr_multi = right rt_attr_multi = site rt_attr_multi = param charset_type = sbcs } index bitrix_trv { #main settings source = trv type = rt path = /var/lib/sphinx/bitrix_trv docinfo = inline morphology = stem_enru, soundex dict = keywords prefix_fields = title infix_fields= min_prefix_len = 2 enable_star = 1 rt_field = title rt_field = body rt_attr_uint = module_id rt_attr_string = module rt_attr_uint = item_id rt_attr_string = item rt_attr_uint = param1_id rt_attr_string = param1 rt_attr_uint = param2_id rt_attr_string = param2 rt_attr_timestamp = date_change rt_attr_timestamp = date_to rt_attr_timestamp = date_from rt_attr_uint = custom_rank rt_attr_multi = tags rt_attr_multi = right rt_attr_multi = site rt_attr_multi = param charset_type = sbcs } |
в чем может быть проблема
при запуске из консоли выдает
Код |
---|
indexer --all --rotate Sphinx 2.0.8-id64-release (r3831) Copyright (c) 2001-2012, Andrew Aksyonoff Copyright (c) 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com) using config file '/etc/sphinx/sphinx.conf'... skipping non-plain index 'bitrix_art'... skipping non-plain index 'bitrix_trv'... total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg total 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg |
I have a RoR app with Posgresql as database. I’m trying to setup search functionality by using Sphinx as search engine and Thinking Sphinx gem. I’ve installed sphinx with mysql and postgresql support, thinking sphinx v3 gem and it’s dependencies.
The command
rake ts:index
performs without errors. Log says that I have 20 docs indexed (all my records of Post model).
Then I’ve tried to create controller and view for search results page. Here’s the Controller’s search action
def search
@query = Riddle::Query.escape(params[:q])
@posts = Post.search(@query)
end
And when I try to use @posts variable in search view
localhost:3000/search?q=hello
I have following error.
ThinkingSphinx::ConnectionError in Main#search
Error connecting to Sphinx via the MySQL protocol. Error connecting to Sphinx via the MySQL protocol. Can’t connect to MySQL server on ‘127.0.0.1’ (61) — SELECT * FROM
post_core
WHERE MATCH(‘hello’) ANDsphinx_deleted
= 0 LIMIT 0, 20; SHOW META
asked Nov 27, 2014 at 18:37
The ts:index
task just stores the Sphinx data, it doesn’t start the daemon which responds to search requests. You need to run ts:start
rake task for this to happen.
Also: ts:rebuild
does all of this at once: stops Sphinx (if it’s running), indexes data, starts Sphinx.
answered Nov 28, 2014 at 3:43
patpat
16k4 gold badges40 silver badges46 bronze badges
0
Thinking Sphinx uses mysql for its internal purposes and you have to add mysql2
gem to your stack, e.g:
gem 'mysql2', '~> 0.3.13'
gem 'thinking-sphinx', '~> 3.1.1'
answered Nov 27, 2014 at 18:52
blelumpblelump
3,2231 gold badge15 silver badges20 bronze badges
I was stuck at all and facing the same error, Finally I found that I have not installed «Sphinx» on my local system with this command,
sudo apt-get update
sudo apt-get install sphinxsearch
More detail regarding installation you can find here
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-sphinx-on-ubuntu-14-04
Make sure you should also have installed «mysql-server» on your system to create connection.
Also I looked @blelump’s answer was my second step. You should include those gems too in order to run with sphinx.
Then move to @pat’s answer was my final step to go, When you installed sphinx it will start service but you need to stop service to run,
rake ts:index
rake ts:rebuild
Here to go with SPHINX.
answered Oct 9, 2015 at 4:44
SSRSSR
6,3784 gold badges33 silver badges50 bronze badges
I have a RoR app with Posgresql as database. I’m trying to setup search functionality by using Sphinx as search engine and Thinking Sphinx gem. I’ve installed sphinx with mysql and postgresql support, thinking sphinx v3 gem and it’s dependencies.
The command
rake ts:index
performs without errors. Log says that I have 20 docs indexed (all my records of Post model).
Then I’ve tried to create controller and view for search results page. Here’s the Controller’s search action
def search
@query = Riddle::Query.escape(params[:q])
@posts = Post.search(@query)
end
And when I try to use @posts variable in search view
localhost:3000/search?q=hello
I have following error.
ThinkingSphinx::ConnectionError in Main#search
Error connecting to Sphinx via the MySQL protocol. Error connecting to Sphinx via the MySQL protocol. Can’t connect to MySQL server on ‘127.0.0.1’ (61) — SELECT * FROM
post_core
WHERE MATCH(‘hello’) ANDsphinx_deleted
= 0 LIMIT 0, 20; SHOW META
asked Nov 27, 2014 at 18:37
The ts:index
task just stores the Sphinx data, it doesn’t start the daemon which responds to search requests. You need to run ts:start
rake task for this to happen.
Also: ts:rebuild
does all of this at once: stops Sphinx (if it’s running), indexes data, starts Sphinx.
answered Nov 28, 2014 at 3:43
patpat
16k4 gold badges40 silver badges46 bronze badges
0
Thinking Sphinx uses mysql for its internal purposes and you have to add mysql2
gem to your stack, e.g:
gem 'mysql2', '~> 0.3.13'
gem 'thinking-sphinx', '~> 3.1.1'
answered Nov 27, 2014 at 18:52
blelumpblelump
3,2231 gold badge15 silver badges20 bronze badges
I was stuck at all and facing the same error, Finally I found that I have not installed «Sphinx» on my local system with this command,
sudo apt-get update
sudo apt-get install sphinxsearch
More detail regarding installation you can find here
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-sphinx-on-ubuntu-14-04
Make sure you should also have installed «mysql-server» on your system to create connection.
Also I looked @blelump’s answer was my second step. You should include those gems too in order to run with sphinx.
Then move to @pat’s answer was my final step to go, When you installed sphinx it will start service but you need to stop service to run,
rake ts:index
rake ts:rebuild
Here to go with SPHINX.
answered Oct 9, 2015 at 4:44
SSRSSR
6,3784 gold badges33 silver badges50 bronze badges
I have a problem starting and working with sphinx.
I was able to run indexer --all
, but now I want to search it, and I keep getting this error when I run searchd --status
.
WARNING: failed to connect to 127.0.0.1:9312: Connection refused
WARNING: failed to connect to 0.0.0.0:9306: Connection refused
FATAL: failed to connect to daemon: please specify listen with sphinx protocol in your config file
sphinx query() returns false, and I guess that’s related to connection problem.
Here’s the part of my .conf file.
searchd
{
listen = 127.0.0.1:9312
listen = 9306:sphinx
listen = 2471:mysql41
log = /var/log/sphinx/searchd.log
query_log = /var/log/sphinx/query.log
max_matches = 1000
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinx/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads # for RT to work
binlog_path = /var/lib/sphinx
}
What am I missing in configuration of listening ports?
asked Sep 17, 2014 at 17:24
6
As noted in comments, indicates searchd
daemon not actully running.
Can try using searchd
to start the daemon (and later searchd --stop
), which can show errors you might not see with using service/init.d starting.
(because if the log file itself is not functional, there is nowhere for errors to go
answered Sep 17, 2014 at 18:19
barryhunterbarryhunter
20.9k3 gold badges29 silver badges43 bronze badges
У меня проблема с запуском и работой с sphinx. Мне удалось запустить indexer --all
, но теперь я хочу выполнить поиск, и у меня постоянно появляется эта ошибка при запуске searchd --status
.
WARNING: failed to connect to 127.0.0.1:9312: Connection refused
WARNING: failed to connect to 0.0.0.0:9306: Connection refused
FATAL: failed to connect to daemon: please specify listen with sphinx protocol in your config file
Sphinx query () возвращает false, и я предполагаю, что это связано с проблемой подключения.
Вот часть моего файла .conf.
searchd
{
listen = 127.0.0.1:9312
listen = 9306:sphinx
listen = 2471:mysql41
log = /var/log/sphinx/searchd.log
query_log = /var/log/sphinx/query.log
max_matches = 1000
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinx/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads # for RT to work
binlog_path = /var/lib/sphinx
}
Что мне не хватает в настройке портов прослушивания?
1 ответ
Лучший ответ
Как отмечено в комментариях, означает, что демон searchd
не работает на самом деле.
Можно попробовать использовать searchd
для запуска демона (и более позднего searchd --stop
), который может показывать ошибки, которые вы могли не увидеть при запуске service / init.d.
(потому что, если сам файл журнала не работает, ошибкам некуда идти
2
barryhunter
17 Сен 2014 в 22:19
I have sphinx setup to run in config files on port 3312. I can use the indexer, and create the index. I can search.
I can’t run searchd to return queries. I tried telnet 127.0.0.1 3312. My connection is refused.
Whats my next step? I am not very good with Iptables.
Wesley
32.4k9 gold badges80 silver badges116 bronze badges
asked Sep 1, 2011 at 19:58
You should start searchd first, something like /usr/local/bin/searchd
(you should use actual path to searchd, try locate searchd
to get it)
Okay, it looks like you have two listen
directives in your config:
listen = {port}
listen = {sql_host}:{sql_port}:mysql41
and the second one is obviously not right
answered Sep 1, 2011 at 20:01
AlexAlex
7,8695 gold badges36 silver badges52 bronze badges
13
It may be because the port is already hold by some else daemon. If the ‘127.0.0.1:3306’ is failed — it is nothing surprising, since 3306 is the port for mysqld.
You can try the 9312 (sphinx api) and 9306 (sphinxql) as official IANA assigned ports for sphinx.
answered Oct 30, 2011 at 8:44
Sphinx (англ. SQL Phrase Index) — система полнотекстового поиска, разработанная Андреем Аксеновым и распространяемая по лицензии GNU GPL. Отличительной особенностью этого поискового движка является высокая скорость индексации и поиска, возможность использовать морфологический и полнотекстовый поиск.
SphinxSE уже обрел популярность среди разработчиков: именно с его помощью осуществляется поиск на популярном Хабрахабре, проекте Викимапия, сайтах популярного книжного интернет-магазина Буквоед и «Санкт-Петербургского Дома Книги», BitTorrent-трекере The Pirate Bay (небезызвестная «Пиратская бухта») и других высоконагруженных проектах.
Полнотекстовый поиск Sphinx доступен в продуктах «1С-Битрикс» с версии 14.0.0. Он позволяет сделать быстрым и качественным поиск на вашем сайте, снизить нагрузку на сервер, а также он полностью интегрирован с компонентами модуля Поиск.
Внимание!
Начиная с версии Sphinx 2.2.1 опция charset_type объявлена как устаревшая:
In 2.2.1-beta version we decided to start removing some old features. All of them was ‘unofficially’ deprecated for some time. And we’re informing you now about it. charset_type=sbcs is now deprecated, we’re slowly switching to UTF-only. Even if your database is SBCS (likely for legacy reasons too, eh?), this should be absolutely trivial to workaround, just add a pre-query to fetch your data in UTF-8 and you’re all set. Also, in fact, our current UTF-8 tokenizer is even faster than the SBCS one.
Несмотря на то, что в документации к модулю «Поиск» начиная с версии v16.5.0 заявляется о поддержке Sphinx 2.2.10 — она работает исключительно для сайтов в кодировке UTF-8.
Настройка Sphinx
Для настройки необходимо зайти в административную панель сайта, затем перейти в меню «Настройки» -> «Настройки продукта» -> «Настройки модулей» -> «Поиск».
Затем перейти во вкладку «Морфология» и в выпадающем списке меню «Полнотекстовый поиск с помощью» выбрать «Sphinx».
Для своей работы Bitrix использует RT индексы, то есть, фактически, запись осуществляется в два места одновременно — в базу данных и сервер полнотекстового поиска Sphinx, при этом сам Indexer (программа индексации из набора Sphinx) не обновляет индексы. Этот подход позволяет всегда осуществлять поиск по актуальной информации.
Далее необходимо скопировать конфигурационный файл, представленный на странице настройки:
#sphinx.conf
index bitrix
{
#main settings
type = rt
path = /var/lib/sphinxsearch/data/bitrix
docinfo = inline
#choose appropriate type of morphology to use
#morphology = lemmatize_ru_all, lemmatize_en_all, lemmatize_de_all, stem_enru
morphology = stem_enru, soundex
#these settings are used by bitrix:search.title component
dict = keywords
prefix_fields = title
infix_fields=
min_prefix_len = 2
enable_star = 1
#all fields must be defined exactly as followed
rt_field = title
rt_field = body
rt_attr_uint = module_id
rt_attr_string = module
rt_attr_uint = item_id
rt_attr_string = item
rt_attr_uint = param1_id
rt_attr_string = param1
rt_attr_uint = param2_id
rt_attr_string = param2
rt_attr_timestamp = date_change
rt_attr_timestamp = date_to
rt_attr_timestamp = date_from
rt_attr_uint = custom_rank
rt_attr_multi = tags
rt_attr_multi = right
rt_attr_multi = site
rt_attr_multi = param
#depends on settings of your site
# uncomment for single byte character set
charset_type = sbcs
# uncomment for UTF character set
#charset_type = utf-8
}
удалив из него строку «infix_fields=». Затем нажать «Применить» сохранив настройки.
На этом первая часть настройки CMS Bitrix для работы с сервером полнотекстового поиска закончена, далее необходимо настроить сам сервер.
Настройка параметров Sphinx происходит в панели управления хостингом — для этого нужно зайти в раздел «Сервисы» -> «Sphinx» или перейти по ссылке https://cp.beget.com/cloudservices/sphinx/. Выбираем необходимый тариф и включаем демон полнотекстового поиска:
Далее переходим на вкладку «Индексация» -> «Редактор конфигурации», вставляем скопированное ранее содержимое конфигурационного файла (с удалением строки «infix_fields=»), и нажимаем «Сохранить»:
Переходим на вкладку «Поисковый сервер» и включаем его.
Так как используются индексы реального времени, необходимо полностью проиндексировать сайт, для этого снова переходим во вкладку «Морфология» панели управления сайтом, в выпадающем списке меню «Полнотекстовый поиск с помощью» выбираем «Sphinx» и нажимаем «Применить».
После применения изменений появится сообщение о необходимости полностью проиндексировать сайт, нажимаем на «Переиндексировать сайт»:
Попав на страницу индексации снимаем галочку «Проиндексировать только измененные» и нажимаем «Переиндексировать»:
Настройка полнотекстового поиска закончена! Проверить работу поиска можно на Вашем сайте.
Если при установке или настройке возникли проблемы, Вы можете обратиться в нашу техническую поддержку — мы с радостью поможем и ответим на все Ваши вопросы.
Я пытаюсь настроить поисковик sphinx на сервере.
На сервере уже есть другой демон поиска sphinx, который запускается от другого пользователя для другого сайта с другим файлом конфигурации (порт 3312).
Вот мой конфигурационный файл sphinx /opt/sphinx/etc/site-sphinx.conf
source site_source
{
type = mysql
sql_host = localhost
sql_user = username
sql_pass = password
sql_db = dbname
sql_port = 3306
sql_sock = /var/run/mysqld/mysqld.sock
mysql_connect_flags = 32
sql_query_pre = SET NAMES utf8
sql_query_pre = SET SESSION query_cache_type=ON
sql_query = SELECT id, title, description, is_deleted, created_at, updated_at FROM table WHERE is_deleted = 0
sql_attr_bool = is_deleted
sql_attr_timestamp = created_at
sql_attr_timestamp = updated_at
sql_ranged_throttle = 0
}
index sitename
{
type = plain
source = site_source
path = /opt/sphinx/var/data/site_index/site
docinfo = extern
dict = keywords
mlock = 0
morphology = stem_en, stem_ru, soundex, metaphone
enable_star = 1
min_stemming_len = 1
min_word_len = 1
min_infix_len = 3
html_strip = 1
html_remove_elements = style, script
}
indexer
{
mem_limit = 1024M
}
searchd
{
listen = 127.0.0.1:3313
log = /opt/sphinx/var/log/site/search.log
query_log = /opt/sphinx/var/log/site/query.log
binlog_path = /opt/sphinx/var/data/site_binlog
read_timeout = 5
max_children = 30
pid_file = /opt/sphinx/var/run/searchd-site.pid
}
Я должен начать sphinxd
site@servername:~$ /opt/sphinx/bin/searchd --config /opt/sphinx/etc/site-sphinx.conf
Sphinx 2.2.9-id64-release (rel22-r5006)
Copyright (c) 2001-2015, Andrew Aksyonoff
Copyright (c) 2008-2015, Sphinx Technologies Inc (http://sphinxsearch.com)
using config file '/opt/sphinx/etc/site-sphinx.conf'...
WARNING: key 'enable_star' was permanently removed from Sphinx configuration. Refer to documentation for details.
listening on 127.0.0.1:3313
precaching index 'site'
precached 1 indexes in 0.051 sec
shapoval@sitename$ netstat -nlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3313 0.0.0.0:* LISTEN 21225/searchd
tcp 0 0 127.0.0.1:3312 0.0.0.0:* LISTEN 26694/searchd
tcp6 0 0 :::3306 :::* LISTEN 16998/mysqld
И я должен начать индексирование
site@servername:~$ /opt/sphinx/bin/indexer --all --rotate --config /opt/sphinx/etc/site-sphinx.conf delta
using config file '/opt/sphinx/etc/site-sphinx.conf'...
WARNING: key 'enable_star' was permanently removed from Sphinx configuration. Refer to documentation for details.
indexing index 'site'...
WARNING: index 'site': dict=keywords and prefixes and morphology enabled, forcing index_exact_words=1
collected 1660326 docs, 674.2 MB
sorted 231.9 Mhits, 100.0% done
total 1660326 docs, 674237370 bytes
total 155.531 sec, 4335045 bytes/sec, 10675.15 docs/sec
total 16 reads, 15.074 sec, 61858.4 kb/call avg, 942.1 msec/call avg
total 1950 writes, 1.040 sec, 998.5 kb/call avg, 0.5 msec/call avg
rotating indices: successfully sent SIGHUP to searchd (pid=25377).
Но я не могу подключиться к базе данных, ни из командной строки, ни из php (я использую yii2, для подключения к sphinx используйте yii2-sphinx).
Когда я пытаюсь подключиться к mysql из командной строки, возникает ошибка:
shapoval@servername$ mysql -h0 -P3313 -u username -p
Enter password:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 "Internal error/check (Not system error)"
При попытке запустить запрос с сайта возникает несколько ошибок:
2015-12-22 10:03:08 [10.10.10.10][][-][error][yiidbException] exception 'yiibaseErrorException' with message 'Packets out of order. Expected 0 received 1. Packet size=0' in /var/www/sitename/vendor/yiisoft/yii2/db/Connection.php:558
Stack trace:
#0 /var/www/sitename/common/extensions/rollbar/RollbarErrorHandlerTrait.php(35): yiibaseErrorHandler->handleError(2, 'Packets out of ...', '/var/www/sitename...', 558)
#1 [internal function]: commonextensionsrollbarRollbarErrorHandler->handleError(2, 'Packets out of ...', '/var/www/sitename...', 558, Array)
#2 /var/www/sitename/vendor/yiisoft/yii2/db/Connection.php(558): PDO->__construct('mysql:host=127....', 'username', 'password', NULL)
#3 /var/www/sitename/vendor/yiisoft/yii2/db/Connection.php(508): yiidbConnection->createPdoInstance()
#4 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Connection.php(112): yiidbConnection->open()
#5 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(255): yiisphinxConnection->createCommand('SHOW TABLES')
#6 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(239): yiisphinxSchema->findIndexes()
#7 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(226): yiisphinxSchema->initIndexesInfo()
#8 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(113): yiisphinxSchema->getIndexTypes()
#9 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(88): yiisphinxSchema->resolveIndexType(Object(yiisphinxIndexSchema))
#10 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(151): yiisphinxSchema->loadIndexSchema('sitename')
#11 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Connection.php(78): yiisphinxSchema->getIndexSchema('sitename', false)
#12 /var/www/sitename/html/vendor/yiisoft/yii2-sphinx/QueryBuilder.php(494): yiisphinxConnection->getIndexSchema('sitename')
#13 /var/www/sitename/vendor/yiisoft/yii2-sphinx/QueryBuilder.php(81): yiisphinxQueryBuilder->buildWhere(Array, 'MATCH(:qp0)', Array)
#14 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Query.php(171): yiisphinxQueryBuilder->build(Object(yiisphinxQuery))
#15 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Query.php(184): yiisphinxQuery->createCommand(NULL)
#16 /var/www/sitename/common/actions/SphinxSearchAction.php(78): yiisphinxQuery->all()
#17 [internal function]: commonactionsSphinxSearchAction->run()
#18 /var/www/sitename/vendor/yiisoft/yii2/base/Action.php(91): call_user_func_array(Array, Array)
#19 /var/www/sitename/vendor/yiisoft/yii2/base/Controller.php(147): yiibaseAction->runWithParams(Array)
#20 /var/www/sitename/vendor/yiisoft/yii2/base/Module.php(460): yiibaseController->runAction('search', Array)
#21 /var/www/sitename/vendor/yiisoft/yii2/web/Application.php(82): yiibaseModule->runAction('site/search', Array)
#22 /var/www/sitename/vendor/yiisoft/yii2/base/Application.php(369): yiiwebApplication->handleRequest(Object(yiiwebRequest))
#23 /var/www/sitename/frontend/web/index.php(18): yiibaseApplication->run()
#24 {main}
Next exception 'PDOException' with message 'SQLSTATE[HY000] [2006] MySQL server has gone away' in /var/www/sitename/vendor/yiisoft/yii2/db/Connection.php:558
Stack trace:
#0 /var/www/sitename/vendor/yiisoft/yii2/db/Connection.php(0): PDO->__construct()
#1 /var/www/sitename/vendor/yiisoft/yii2/db/Connection.php(508): yiidbConnection->createPdoInstance()
#2 /var/www/sitename/yiisoft/yii2-sphinx/Connection.php(112): yiidbConnection->open()
#3 /var/www/sitename/yiisoft/yii2-sphinx/Schema.php(255): yiisphinxConnection->createCommand('SHOW TABLES')
#4 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(239): yiisphinxSchema->findIndexes()
#5 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(226): yiisphinxSchema->initIndexesInfo()
#6 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(113): yiisphinxSchema->getIndexTypes()
#7 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(88): yiisphinxSchema->resolveIndexType(Object(yiisphinxIndexSchema))
#8 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(151): yiisphinxSchema->loadIndexSchema('sitename')
#9 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Connection.php(78): yiisphinxSchema->getIndexSchema('sitename', false)
#10 /var/www/sitename/vendor/yiisoft/yii2-sphinx/QueryBuilder.php(494): yiisphinxConnection->getIndexSchema('sitename')
#11 /var/www/sitename/vendor/yiisoft/yii2-sphinx/QueryBuilder.php(81): yiisphinxQueryBuilder->buildWhere(Array, 'MATCH(:qp0)', Array)
#12 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Query.php(171): yiisphinxQueryBuilder->build(Object(yiisphinxQuery))
#13 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Query.php(184): yiisphinxQuery->createCommand(NULL)
#14 /var/www/sitename/common/actions/SphinxSearchAction.php(78): yiisphinxQuery->all()
#15 [internal function]: commonactionsSphinxSearchAction->run()
#16 /var/www/sitename/vendor/yiisoft/yii2/base/Action.php(91): call_user_func_array(Array, Array)
#17 /var/www/sitename/vendor/yiisoft/yii2/base/Controller.php(147): yiibaseAction->runWithParams(Array)
#18 /var/www/sitename/vendor/yiisoft/yii2/base/Module.php(460): yiibaseController->runAction('search', Array)
#19 /var/www/sitename/vendor/yiisoft/yii2/web/Application.php(82): yiibaseModule->runAction('site/search', Array)
#20 /var/www/sitename/vendor/yiisoft/yii2/base/Application.php(369): yiiwebApplication->handleRequest(Object(yiiwebRequest))
#21 /var/www/sitename/frontend/web/index.php(18): yiibaseApplication->run()
#22 {main}
Next exception 'yiidbException' with message 'SQLSTATE[HY000] [2006] MySQL server has gone away' in /var/www/sitename/vendor/yiisoft/yii2/db/Connection.php:513
Stack trace:
#0 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Connection.php(112): yiidbConnection->open()
#1 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(255): yiisphinxConnection->createCommand('SHOW TABLES')
#2 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(239): yiisphinxSchema->findIndexes()
#3 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(226): yiisphinxSchema->initIndexesInfo()
#4 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(113): yiisphinxSchema->getIndexTypes()
#5 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(88): yiisphinxSchema->resolveIndexType(Object(yiisphinxIndexSchema))
#6 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Schema.php(151): yiisphinxSchema->loadIndexSchema('sitename')
#7 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Connection.php(78): yiisphinxSchema->getIndexSchema('sitename', false)
#8 /var/www/sitename/vendor/yiisoft/yii2-sphinx/QueryBuilder.php(494): yiisphinxConnection->getIndexSchema('sitename')
#9 /var/www/sitename/vendor/yiisoft/yii2-sphinx/QueryBuilder.php(81): yiisphinxQueryBuilder->buildWhere(Array, 'MATCH(:qp0)', Array)
#10 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Query.php(171): yiisphinxQueryBuilder->build(Object(yiisphinxQuery))
#11 /var/www/sitename/vendor/yiisoft/yii2-sphinx/Query.php(184): yiisphinxQuery->createCommand(NULL)
#12 /var/www/sitename/common/actions/SphinxSearchAction.php(78): yiisphinxQuery->all()
#13 [internal function]: commonactionsSphinxSearchAction->run()
#14 /var/www/sitename/vendor/yiisoft/yii2/base/Action.php(91): call_user_func_array(Array, Array)
#15 /var/www/sitename/vendor/yiisoft/yii2/base/Controller.php(147): yiibaseAction->runWithParams(Array)
#16 /var/www/sitename/vendor/yiisoft/yii2/base/Module.php(460): yiibaseController->runAction('search', Array)
#17 /var/www/sitename/vendor/yiisoft/yii2/web/Application.php(82): yiibaseModule->runAction('site/search', Array)
#18 /var/www/sitename/vendor/yiisoft/yii2/base/Application.php(369): yiiwebApplication->handleRequest(Object(yiiwebRequest))
#19 /var/www/sitename/frontend/web/index.php(18): yiibaseApplication->run()
#20 {main}
Настройки подключения Sphinx в yii2
<?php
return [
'dsn' => 'mysql:host=127.0.0.1;port=3313;',
'username' => 'username',
'password' => 'password',
];
Код в yii2 для выполнения запроса
$query = (new Query())
->from('sourceName')
->match('*'.Yii::$app->request->get('q').'*');
$rows = $query->all();
Дополнительная информация о сервере:
- Ubuntu 15.04
- Linux 3.19.0-21-generic x86_64
- Sphinx 2.2.9-id64-release (rel22-r5006)
- MySQL 10.0.20-MariaDB-1 ~ vivid-log
В чем может быть проблема?
Буду рад любой помощи. Спасибо!
2
- Главная
- Новые
Не делает индексацию..
/usr/local/sphinx/bin/indexer —all
Sphinx 2.0.9-release (rel20-r4115)
Copyright (c) 2001-2013, Andrew Aksyonoff
Copyright (c) 2008-2013, Sphinx Technologies Inc (http://sphinxsearch.com)
using config file ‘/usr/local/sphinx/etc/sphinx.conf’…
indexing index ‘nameuser_prefix_topicsIndex’…
ERROR: index ‘nameuser_prefix_topicsIndex’: sql_connect: Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0 (DSN=mysql://nameuser:***@ip.ip.ip.ip:port/nameuser).
total 0 docs, 0 bytes
total 60.058 sec, 0 bytes/sec, 0.00 docs/sec
indexing index ‘nameuser_prefix_commentsIndex’…
FATAL: failed to lock /var/lib/sphinxsearch/data/nameuser_prefix_data/commentsIndex.spl: Resource temporarily unavailable, will not index. Try —rotate option.
Система Debian 6.0 squeeze
Делал по инструкции http://ls.vaktive.ru/setup-server/1/ustanovka-i-nastroyka-sphinx-205-debian-60-squeeze.html
Похожие статьи
- Ошибка в плагине «Гостевые комментарии»
Устанавливаю плагин «Гостевые комментарии», побывал разные версии: из каталога 1.1.9 и с гитхаба 1.1.10 на AltoCMS 1.1.29
В настройках указываю обязательный email адрес, нажимаю сохранить и вылетает такая ошибка…
- Настройка страниц
Как настроить созданные страницы, чтобы были доступны: имясайт.ru/page/about.html а не имясайт.ru/page/about/
Меняю в админке URL, выдает ошибку:
И как можно вообще убрать слово «page». Чтобы адрес был как в…
- Importer
Добрый день.
1) нет темы данного плагина
2) нет описания как его настроить под Alto, кто разобрался поделитесь своим опытом пожалуйста. Лично я вам буду благодарен.
3) может вы что-то добавили, или переделали в… - Про секретную админку, поддомены и прочие тонкости маршрутизации в Alto CMS
Довольно часто встречаются такие вопросы:
А как сделать, чтобы админка работала не по адресу site.com/admin, а по секретному адресу, который знаю только я? Или вопрос из этой же серии: как сделать, чтоб блоги…
В начале этого года Битрикс выпустили новую, седьмую, версию своего “Веб-окружения”. Самое главное – теперь официально поддерживается установка на CentOS 7 и php 7. Небольшое пояснение, если вы не в курсе. «1С-Битрикс: Веб-окружение» – это готовая среда с предустановленным рекомендуемым набором программного обеспечения, необходимого для корректной работы CMS 1С-Битрикс. Поставляется как в большом многообразии – есть готовые образа для различной виртуализации (подробнее см. на официальном сайте) и установочный скрипт для установки на сервер. Вот работу с последним мы и рассмотрим.
Что получим
Веб-окружение позиционируется, как лучшее решение для всей линейки продуктов Битрикс – как для всех редакций “1С-Битрикс: Управление Сайтом” так и для коробки Битрикс24. Давайте посмотрим, что нам предлагают использовать в качестве рекомендуемой связки.
Сама схема традиционна: Apache+nginx. Для текущей 7.0.1 версии веб-окружения используются стабильные Apache 2.4 и nginx 1.10.2. Самое главное нововведение, переход на php 7. Про официальную поддержку nginx+php-fpm пока даже слухов нет, так что данный вариант по прежнему придется собирать руками.
Версия MySQL, а точнее форка MariaDB, по прежнему 5.5, в соответствии с официальными репозиториями CentOS. Хотя, если вы обновлялись до последних версий Битрикс, наверняка встречали предложение выполнить в консоли БД некий sql-запрос для модуля “Веб-мессенджер”, который можно провернуть только с версией 5.6. Про переход на 5.6, так же как нибудь расскажу.
Что еще входит в пакет:
- memcached – сервис обеспечивающий кеширование данных в ОЗУ, при правильном использовании дает значительное ускорение работы. По умолчанию не используется;
- stunnel – для организации шифрованных ssl-тунелей;
- catdoc – библиотека для работы с форматами MS Office. В частности используется для поиска по документам;
- xpdf – задачи те же что и пунктом выше, только для PDF;
- munin и nagios – мониторинг состояния сервера. По умолчанию не используется;
- sphinx – полнотекстовый поиск. На данный момент наилучшее решение по удобству, качеству и скорости поиска. По умолчанию не используется.
Само собой все это уже настроено на корректную работу друг с другом. Давайте ставить.
Установка «1С-Битрикс: Веб-окружение» на сервер
Качаем скрипт установки – актуальную ссылку на скачивание можно поглядеть на оф. сайте. Запускать надо root’ом и далее подразумевается, что мы находимся в
/root
. Если нет, перейдите выполнив:
В процессе установки будут задаваться уточняющие вопросы.
n
или
N
служат для отказа, любой другой ввод – для соглашения. Т.е. что бы согласится достаточно нажать
Enter
.
# curl -O http://repos.1c-bitrix.ru/yum/bitrix-env.sh # bash bitrix-env.sh |
Если у вас включен SElinux, то первым шагом попросят отключить:
You must disable SElinux before installing the Bitrix Environment. Do you want disable SELinux?(Y|n) |
Соглашаемся и жмем
Enter
для подтверждения. После успешного отключения надо перегрузить сервер:
Change SELinux state to disabled in /etc/selinux/config Change SELinux state to disabled in /etc/sysconfig/selinux Please reboot the system! (cmd: reboot) |
После перезагрузки заново запускаем скрипт установки.
Запуск установки “1С-Битрикс: Веб-Окружение”
Первым будет запушен процесс обновления системы, что бы актуализировать версии установленных пакетов. Т.е. по сути:
Затем будет установлено все необходимое ПО. Процесс установки занимает около 10-15 мин. После установки спросят, хотим ли мы задать пароль root для MySQL. Соглашаемся и устанавливаем:
Do you want to set a password for root user in MySQL service?(Y|n): Enter root password: Re-enter root password: |
На этом установка завершена, о чем будет выдано соответствующее извещение.
Запускаем скрипт управления средой (после перезагрузки и входа по root’ом этот скрипт будет запускаться автоматически):
При первом запуске нас попросят задать пароль для пользователя
bitrix
.
Первый запуск 1С-Битрикс: Веб окружение
Задаем пароль и попадаем в стартовое меню “1С-Битрикс: Веб-окружение”. Установка завершена, переходим к настройке.
Настройка Веб-окружения Битрикс
Меню при первом запуске
Чем хороши скрипты Веб-окружения, то это тем, что позволяют настроить веб-сервер под 1С-Битрикс, не обладая глубокими знаниями по администрированию Linux. А для тех, кто разбирается, сократить время на рутинные операции по настройке сервера. Теоретически, вам вообще нет необходимости выходить из оболочки веб-окружения, все должно делается ее средствами. На практике, конечно, это не совсем так, но для быстрого запуска веб-сервера, это отличное решение.
Давайте все же немного разберемся с настройками и создадим среду для сайта, куда развернем Битрикс: Управление Сайтом (БУС).
Первым делом нам надо создать Menengment pool (управляемую среду). Для этого выбираем пункт 1 меню (жмем цифру 1 и
Enter
). Запустится мастер который попросит вас ввести FQDN адрес вашего сайта. Вводите имя вашего домена без www, http и т.п. Т.к. я настраиваю в локальной виртуальной среде, у меня это будет mysite.local.
Создаем управляемую среду (Managment pool) в веб-окружении Битрикс.
После этого в главном меню добавится значительное число пунктов.
Главное меню, после создания пула
Собственно, на этом можно было бы и остановится, если вы перейдете по адресу, который вы задали для среды, то увидите следующее:
Среда создана, можно ставить Битрикс
Т.е. вполне можете разворачивать свой Битрикс с нуля или из резервной копии.
Давайте еще немного помучаем меню веб-окружения и посмотрим, чего полезного надо сделать.
Настройка почты
Этот пункт первый, который надо сделать еще до установки самой CMS.
Идем сначала
6. Manage sites in the pool
, затем
4. Change email settings on site
. Затем выбираем сайт, для которого идет настройка, если он у нас один (будет обозначен как default), то просто жмем
Enter
. Затем:
- Enter from address (ex. bob@example.org): указываем адрес от имени которого будет происходить рассылка, желательно указывать существующий;
- Enter server address or DNS (127.0.0.1): оставляем как указано и жмем
Enter
; - Enter server port (25): то же оставляем как есть;
- Do you want to use SMTP authentication on the 127.0.0.1:25? (N|y) – нет, спасибо. Вводим
n
; - Do you need TLS enable for 127.0.0.1:25 (n|Y): то же нет, вводим
n
.
Собственно все видно на скриншоте:
Настраиваем почту
В Битрикс, запускаем “Проверку системы” и убеждаемся, что все в порядке:
Почта работает
Надеюсь, вы понимаете, что к отправленной таким образом почте будет крайне мало доверия. Поэтому рекомендую настраивать почту через реальный SMTP сервер с аутентификацией и настроенным DKIM.
И ещё один момент – почтовый лог пишется в
/home/bitrix/msmtp_default.log
Включаем memcached
В главном меню переходим к пункту
4. Configure memcahed servers
. И затем
1. Create memcached server
. Затем вводим имя хоста для которого будет запущен сервис. В нашем случае он у нас один.
Включаем memcached для Битрикс: Веб-окружение
Собственно все – как видно на скрине, все запущено. Жмем Enter для возврата в предыдущее меню.
После этого не забудьте включить поддержку memcached в Битрикс – как описано в официальной документации.
Включаем sphinx
Аналогично добавим для Битрикс поддержку полнотекстового поиска через sphinx. Выбираем
7. Manage sphinx in the pool
, затем
1. Create sphinx instance on server
Здесь нам надо сначала ввести имя хоста, а затем имя базы данных, с которой будет работать sphinx. На запрос переиндексации соглашайтесь (Битрикс должен быть уже установлен и БД не пустая).
Включаем sphinx
Как всегда с Битрикс, есть особенности. Если модуль “Поиск” меньше версии 17.0.0 то будете получать сообщение “Ошибка подключения к серверу Sphinx: Расширение MySql не установлено”.
Ну и последнее,
Как отключить автоматический запуск меню Веб-окружения при логине
Выходим из меню веб-окружения в консоль сервера (
0. Exit
). И в файле
~/.bash_profile
комментируем последнюю строку, где скрипт меню и вызывается:
export PATH #bitrix-env export BITRIX_VA_VER=7.0.1 #menu #~/menu.sh — вызов меню при старте сесии |
Here’s one from my birthday.
Is a TS upgrade required to upgrade sphinx to 2.2.11? This is a legacy project that just needs to run for now. Not a lot of development going on right now.
[Mon Feb 5 17:10:05.961 2018] [ 4921] caught SIGHUP (seamless=1, in queue=1)
------- FATAL: CRASH DUMP -------
[Mon Feb 5 17:10:05.961 2018] [ 4921]
--- crashed SphinxAPI request dump ---
--- request dump end ---
Sphinx 2.2.6-id64-release (r4843)
Handling signal 11
-------------- backtrace begins here ---------------
Program compiled with x86_64-linux-gnu-gcc 4.8
Configured with flags: '--host=x86_64-linux-gnu' '--build=x86_64-linux-gnu' '--prefix=/usr' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--localstatedir=/var/lib/sphinxsearch' '--sysconfdir=/etc/sphinxsearch' '--with-mysql' '--with-pgsql' '--enable-id64' '--with-libstemmer' '--with-re2' '--with-unixodbc' '--with-syslog' 'CFLAGS=-Wall -g -O3' 'LDFLAGS=-Wl,-z,defs -pthread' 'build_alias=x86_64-linux-gnu' 'host_alias=x86_64-linux-gnu'
Host OS is Linux trusty64 3.13.0-35-generic #62-Ubuntu SMP Fri Aug 15 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Stack bottom = 0x7fffc04eea8f, thread stack size = 0x100000
Trying manual backtrace:
Something wrong with thread stack, manual backtrace may be incorrect (fp=0xb)
Wrong stack limit or frame pointer, manual backtrace failed (fp=0xb, stack=0x7fffc04f0000, stacksize=0x100000)
Trying system backtrace:
begin of system symbols:
searchd[0x58bba0]
searchd[0x40eddd]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x10340)[0x7f8005987340]
searchd[0x438950]
searchd[0x43c1e9]
searchd[0x45afbc]
searchd[0x45c6c6]
searchd[0x408977]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7f80040cdec5]
searchd[0x408e15]
-------------- backtrace ends here ---------------
Please, create a bug report in our bug tracker (http://sphinxsearch.com/bugs) and attach there:
a) searchd log, b) searchd binary, c) searchd symbols.
Look into the chapter 'Reporting bugs' in the documentation
(/usr/share/doc/sphinx/sphinx.txt or http://sphinxsearch.com/docs/current.html#reporting-bugs)
--- BT to source lines (depth 10): ---
--- BT to source lines finished ---
--- 3 active threads ---
thd 0, proto sphinxql, state net_idle, command update
thd 1, proto sphinxql, state net_idle, command update
thd 2, proto sphinxql, state net_idle, command update
------- CRASH DUMP END -------
14 / 12 / 2 Регистрация: 04.05.2017 Сообщений: 100 |
|
1 |
|
Проблема после переноса сайта на новый хостинг08.06.2020, 11:23. Показов 14340. Ответов 17
Добрый день! Код [Error] > Call to a member function IsAuthorized() on string (0) > /home/site.ru/docs/bitrix/modules/sale/general/basket.php:3776 > #0: CAllSaleUser::GetID(boolean) > /home/site.ru/docs/bitrix/modules/sale/lib/fuser.php:50 > #1: BitrixSaleFuser::getId() > /home/site.ru/docs/local/php_interface/init.php:47 > #2: resetDescription() > /home/site.ru/docs/local/php_interface/init.php:61 > #3: checkEmptyDescription() > /home/site.ru/docs/bitrix/modules/main/classes/general/module.php:475 > #4: ExecuteModuleEventEx(array) > /home/site.ru/docs/bitrix/modules/main/include.php:284 > #5: require_once(string) > /home/site.ru/docs/bitrix/modules/main/include/prolog_before.php:14 > #6: require_once(string) > /home/site.ru/docs/bitrix/modules/main/include/prolog.php:10 > #7: require_once(string) > /home/site.ru/docs/bitrix/header.php:1 > #8: require(string) > /home/site.ru/docs/index.php:2 Причем по техническому домену сайт открывается, а также при удалении cookie, но введя в поиск что либо получаем следующий лог: Код [BitrixMainDBConnectionException] Sphinx connect error: Ошибка подключения (No route to host). (400) /home/site.ru/docs/bitrix/modules/search/tools/sphinx.php:74 #0: CSearchSphinx->connect(string, string) /home/site.ru/docs/bitrix/modules/search/classes/general/full_text.php:25 #1: CSearchFullText::getInstance() /home/site.ru/docs/bitrix/modules/search/classes/general/search.php:116 #2: CAllSearch->Search(array, array, array) /home/site.ru/docs/bitrix/components/bitrix/search.page/component.php:317 #3: include(string) /home/site.ru/docs/bitrix/modules/main/classes/general/component.php:594 #4: CBitrixComponent->__includeComponent() /home/site.ru/docs/bitrix/modules/main/classes/general/component.php:653 #5: CBitrixComponent->includeComponent(string, array, object) /home/site.ru/docs/bitrix/modules/main/classes/general/main.php:1037 #6: CAllMain->IncludeComponent(string, string, array, object) /home/site.ru/docs/local/templates/Rina/components/bitrix/catalog.search/main/template.php:35 #7: include(string) /home/site.ru/docs/bitrix/modules/main/classes/general/component_template.php:720 #8: CBitrixComponentTemplate->__IncludePHPTemplate(array, array, string) /home/site.ru/docs/bitrix/modules/main/classes/general/component_template.php:815 #9: CBitrixComponentTemplate->IncludeTemplate(array) /home/site.ru/docs/bitrix/modules/main/classes/general/component.php:735 #10: CBitrixComponent->showComponentTemplate() /home/site.ru/docs/bitrix/modules/main/classes/general/component.php:683 #11: CBitrixComponent->includeComponentTemplate() /home/site.ru/docs/bitrix/components/bitrix/catalog.search/component.php:29 #12: include(string) /home/site.ru/docs/bitrix/modules/main/classes/general/component.php:594 #13: CBitrixComponent->__includeComponent() /home/site.ru/docs/bitrix/modules/main/classes/general/component.php:653 #14: CBitrixComponent->includeComponent(string, array, object) /home/site.ru/docs/bitrix/modules/main/classes/general/main.php:1037 #15: CAllMain->IncludeComponent(string, string, array, object) /home/site.ru/docs/local/templates/Rina/components/bitrix/catalog/main/search.php:104 #16: include(string) /home/site.ru/docs/bitrix/modules/main/classes/general/component_template.php:720 #17: CBitrixComponentTemplate->__IncludePHPTemplate(array, array, string) /home/site.ru/docs/bitrix/modules/main/classes/general/component_template.php:815 #18: CBitrixComponentTemplate->IncludeTemplate(array) /home/site.ru/docs/bitrix/modules/main/classes/general/component.php:735 #19: CBitrixComponent->showComponentTemplate() /home/site.ru/docs/bitrix/modules/main/classes/general/component.php:683 #20: CBitrixComponent->includeComponentTemplate(string) /home/site.ru/docs/bitrix/components/bitrix/catalog/component.php:171 #21: include(string) /home/site.ru/docs/bitrix/modules/main/classes/general/component.php:594 #22: CBitrixComponent->__includeComponent() /home/site.ru/docs/bitrix/modules/main/classes/general/component.php:653 #23: CBitrixComponent->includeComponent(string, array, boolean) /home/site.ru/docs/bitrix/modules/main/classes/general/main.php:1037 #24: CAllMain->IncludeComponent(string, string, array, boolean) /home/site.ru/docs/catalog/index.php:626 Версия PHP 7.2 Хостер nic.ru
0 |
2217 / 1146 / 229 Регистрация: 16.03.2008 Сообщений: 5,490 Записей в блоге: 2 |
|
08.06.2020, 12:29 |
2 |
По первой. У вас какая то проблема с глобальными переменными. (Особенно если учесть. что на техническом домене открывается)…. Может где то какие то права на сервере «перекошены». Разворачивали стандартным мастером Битрикса?
1 |
14 / 12 / 2 Регистрация: 04.05.2017 Сообщений: 100 |
|
08.06.2020, 12:32 [ТС] |
3 |
Да, через файл restore.php
0 |
2217 / 1146 / 229 Регистрация: 16.03.2008 Сообщений: 5,490 Записей в блоге: 2 |
|
08.06.2020, 12:42 |
4 |
Сообщение было отмечено Кверт как решение РешениеНу второй вопрос. тут однозначно. Просто настраивайте сфинкс (ну или откажитесь от его использования в админке) По первому. тут или серверный косяк, или (что вероятнее) у вас какойто код выполняется до инициализации переменной $USER (что является ошибкой). Возможно на техническом открывается — потому, что, например, там какая то проверка на домен еще есть…. Явно там косяк, который надо исправить. (смотреть на $USER->GetId() — сейчас он у вас выполняется слишком рано)
1 |
14 / 12 / 2 Регистрация: 04.05.2017 Сообщений: 100 |
|
08.06.2020, 12:50 [ТС] |
5 |
Хорошо, спасибо, по второму вопросу понял, а может быть проблема в хостинге по первому? потому что до переноса на новый хостинг все работало без проблем и изменений никаких не вносилось? Я так полагаю, что если бы была подобная ошибка, то и на старом хостинге это проявлялось?
0 |
2217 / 1146 / 229 Регистрация: 16.03.2008 Сообщений: 5,490 Записей в блоге: 2 |
|
08.06.2020, 12:58 |
6 |
Маловероятно. Просто у вас по каким то причинам эта ошибка не возникала. Баг он ведь такой — может выскочить только при определенных условиях. Тут надо смотреть на код. Скорее всего у вас checkEmptyDescription выполняется на некоем событии, которое вызывается до инициализации $USER. Т.е. при разработке не учли порядок выполнения страницы. А почему там прокатывало, а тут нет — надо уже смотреть на коды этих двух функций. Какие они условия проверяют. Исходя из их названий в качестве гаданий на кофейной гуще: на старом месте не было необходимости генерировать некое описание. А тут, например, некий генерируемый файл с описанием или пропал или путь к нему сломался или с правами беда…… Например у вас это название зависит от домена. Если домен из спсика — генерируется, не из спсика (технический), то просто остается пустым или дефолтным
0 |
14 / 12 / 2 Регистрация: 04.05.2017 Сообщений: 100 |
|
08.06.2020, 13:13 [ТС] |
7 |
Вот строчки с 47 по 61, может получится что то определить Код $fUserId = BitrixSaleFuser::getId(); $siteId = BitrixMainApplication::getInstance()->getContext()->getSite(); $basket = BitrixSaleBasket::loadItemsForFUser($fUserId, $siteId); $discounts = BasketRefreshExtraDiscount::getDiscount($basket); BasketRefreshExtraCalculator::calculateBasket($basket); BasketRefreshExtraDiscount::applyDiscount($basket, $discounts); } } resetDescription();
0 |
voral 2217 / 1146 / 229 Регистрация: 16.03.2008 Сообщений: 5,490 Записей в блоге: 2 |
||||
08.06.2020, 13:17 |
8 |
|||
Нет не достаточно. Тут даже важнее понять где эта функция вызывается. Посмотрите поиском по файл init.php checkEmptyDescription может где то встречается, или в списке агентов в админке Добавлено через 1 минуту
0 |
14 / 12 / 2 Регистрация: 04.05.2017 Сообщений: 100 |
|
08.06.2020, 13:20 [ТС] |
9 |
Код global $USER; if (($USER->IsAdmin() || ($all == true)) or $USER->GetID() == "18") { echo "<pre>"; print_r($var); echo "</pre>"; } if ($die) { die; } Да, Вы правы, она вызывается первой, с 8 по 16 строки, то есть желательно переместить ее ниже?
0 |
2217 / 1146 / 229 Регистрация: 16.03.2008 Сообщений: 5,490 Записей в блоге: 2 |
|
08.06.2020, 13:25 |
10 |
Тут нет ее вызова Добавлено через 48 секунд
0 |
14 / 12 / 2 Регистрация: 04.05.2017 Сообщений: 100 |
|
08.06.2020, 14:06 [ТС] |
11 |
Код EventManager::getInstance()->addEventHandler('main', 'OnPageStart', 'checkEmptyDescription'); function checkEmptyDescription() { У меня возникло подозрение, что это опять же со сфинксом связано, так как идет поиск по cookie о товарах в корзине, я его отключил, поиск заработал стандартный, сейчас жду ответа от тех, кто не чистил куки и не мог войти на сайт, у меня после чистки cookie вход уже работал, пока не могу это проверить, а по функции нашло такой участок по поиску Добавлено через 33 минуты
0 |
voral 2217 / 1146 / 229 Регистрация: 16.03.2008 Сообщений: 5,490 Записей в блоге: 2 |
||||||||||||
02.07.2020, 18:58 |
12 |
|||||||||||
Смотрите вы привели кусок кода с 47 по 61. Судя по двум закрывающим скобкам этот код выполняется при определенных условиях. В идеале их посмотреть. Среди прочего до этой строки, должно быть подключение модуля sale. Т.е. примерно такой код
Это может быть и как условие (или часть оного). т.е. типа
Если такой строки выше по коду нет — то достаточно большая вероятность, что в этом проблема. Добавлено через 1 минуту
тоже «годиться»
0 |
14 / 12 / 2 Регистрация: 04.05.2017 Сообщений: 100 |
|
02.07.2020, 19:12 [ТС] |
13 |
Код // Установит описание расчета в корзине, если оно пустое EventManager::getInstance()->addEventHandler('main', 'OnPageStart', 'checkEmptyDescription'); function checkEmptyDescription() { if (empty($_SESSION['BASKET_DESCRIPTION'])) { if (!function_exists('resetDescription')) { function resetDescription() { Loader::includeModule('sale'); $fUserId = BitrixSaleFuser::getId(); $siteId = BitrixMainApplication::getInstance()->getContext()->getSite(); $basket = BitrixSaleBasket::loadItemsForFUser($fUserId, $siteId); $discounts = BasketRefreshExtraDiscount::getDiscount($basket); BasketRefreshExtraCalculator::calculateBasket($basket); BasketRefreshExtraDiscount::applyDiscount($basket, $discounts); } } resetDescription(); } } Эта часть или что то еще потребуется? Добавлено через 10 минут Код <? namespace BasketRefreshExtra; class Description { public static function setDescription($description) { $_SESSION['BASKET_DESCRIPTION'] = $description; } } На всякий случай еще description.php выглядит так
0 |
voral 2217 / 1146 / 229 Регистрация: 16.03.2008 Сообщений: 5,490 Записей в блоге: 2 |
||||
02.07.2020, 19:35 |
14 |
|||
Сообщение было отмечено Кверт как решение РешениеЯ бы сделал так (если не вдаваться в правильность самой логики). Изменил событие на OnBeforeProlog
А вообще у вас есть класс BasketRefreshExtraDiscount в нем идет работа с этой переменной сессии, и в коде вы работаете с ней, уж лучше тогда все это оформить в рамках этого класса. (но это уже лирика)
0 |
14 / 12 / 2 Регистрация: 04.05.2017 Сообщений: 100 |
|
02.07.2020, 20:09 [ТС] |
15 |
Хорошо, спасибо, попробую, отпишусь тогда по результатам, как и говорил проблема локальная, я данную ошибку у себя вызвать не смог пока, но у многих пользователей она присутствует, как получу обратную связь, смогу ответить, помогло или нет
0 |
2217 / 1146 / 229 Регистрация: 16.03.2008 Сообщений: 5,490 Записей в блоге: 2 |
|
02.07.2020, 20:14 |
16 |
В режиме инкогнито потестируйте — у вас гарантировано должна быть «чистая» сессия. Так же возможно это на какой то конкретной странице или ситуации. Предположим на прочих страницах срабатывает некоторое событие раньше (точнее обработчик), которое «решает» эту проблему Добавлено через 1 минуту
0 |
14 / 12 / 2 Регистрация: 04.05.2017 Сообщений: 100 |
|
02.07.2020, 20:23 [ТС] |
17 |
В режиме инкогнито пробовал, у пользователей по метрике тоже все открывается, данная проблема возникает у активных авторизованных пользователей, наверно связано с дисконтом или еще какими то функциями, надеюсь данное решение поможет, в любом случае отпишусь по результатам. В режиме инкогнито еще раз протестировал, тоже все работает.
0 |
14 / 12 / 2 Регистрация: 04.05.2017 Сообщений: 100 |
|
03.07.2020, 16:38 [ТС] |
18 |
Пользователи, у которых возникала данная проблема, смогли зайти. Пока только часть опросили, но вроде все работает и открывается. В любом случае данное решение помогло. Большое спасибо за помощь
0 |
Что такое Sphinx?
Sphinx (англ. SQL Phrase Index) — система полнотекстового поиска, разработанная Андреем Аксеновым и распространяемая по лицензии GNU GPL. Отличительной особенностью этого поискового движка является высокая скорость индексации и поиска, возможность использовать морфологический и полнотекстовый поиск.
SphinxSE уже обрел популярность среди разработчиков: именно с его помощью осуществляется поиск на популярном Хабрахабре, проекте Викимапия, сайтах популярного книжного интернет-магазина Буквоед и «Санкт-Петербургского Дома Книги», BitTorrent-трекере The Pirate Bay (небезызвестная «Пиратская бухта») и других высоконагруженных проектах.
Полнотекстовый поиск Sphinx доступен в продуктах «1С-Битрикс» с версии 14.0.0. Он позволяет сделать быстрым и качественным поиск на вашем сайте, снизить нагрузку на сервер, а также он полностью интегрирован с компонентами модуля Поиск.
Внимание!
Начиная с версии Sphinx 2.2.1 опция charset_type объявлена как устаревшая:
In 2.2.1-beta version we decided to start removing some old features. All of them was ‘unofficially’ deprecated for some time. And we’re informing you now about it. charset_type=sbcs is now deprecated, we’re slowly switching to UTF-only. Even if your database is SBCS (likely for legacy reasons too, eh?), this should be absolutely trivial to workaround, just add a pre-query to fetch your data in UTF-8 and you’re all set. Also, in fact, our current UTF-8 tokenizer is even faster than the SBCS one.
Несмотря на то, что в документации к модулю «Поиск» начиная с версии v16.5.0 заявляется о поддержке Sphinx 2.2.10 — она работает исключительно для сайтов в кодировке UTF-8.
Настройка Sphinx
Для настройки необходимо зайти в административную панель сайта, затем перейти в меню «Настройки» -> «Настройки продукта» -> «Настройки модулей» -> «Поиск».
Затем перейти во вкладку «Морфология» и в выпадающем списке меню «Полнотекстовый поиск с помощью» выбрать «Sphinx».
Для своей работы Bitrix использует RT индексы, то есть, фактически, запись осуществляется в два места одновременно — в базу данных и сервер полнотекстового поиска Sphinx, при этом сам Indexer (программа индексации из набора Sphinx) не обновляет индексы. Этот подход позволяет всегда осуществлять поиск по актуальной информации.
Далее необходимо скопировать конфигурационный файл, представленный на странице настройки:
#sphinx.conf
index bitrix
{
#main settings
type = rt
path = /var/lib/sphinxsearch/data/bitrix
docinfo = inline
#choose appropriate type of morphology to use
#morphology = lemmatize_ru_all, lemmatize_en_all, lemmatize_de_all, stem_enru
morphology = stem_enru, soundex
#these settings are used by bitrix:search.title component
dict = keywords
prefix_fields = title
infix_fields=
min_prefix_len = 2
enable_star = 1
#all fields must be defined exactly as followed
rt_field = title
rt_field = body
rt_attr_uint = module_id
rt_attr_string = module
rt_attr_uint = item_id
rt_attr_string = item
rt_attr_uint = param1_id
rt_attr_string = param1
rt_attr_uint = param2_id
rt_attr_string = param2
rt_attr_timestamp = date_change
rt_attr_timestamp = date_to
rt_attr_timestamp = date_from
rt_attr_uint = custom_rank
rt_attr_multi = tags
rt_attr_multi = right
rt_attr_multi = site
rt_attr_multi = param
#depends on settings of your site
# uncomment for single byte character set
charset_type = sbcs
# uncomment for UTF character set
#charset_type = utf-8
}
удалив из него строку «infix_fields=». Затем нажать «Применить» сохранив настройки.
На этом первая часть настройки CMS Bitrix для работы с сервером полнотекстового поиска закончена, далее необходимо настроить сам сервер.
Настройка параметров Sphinx происходит в панели управления хостингом — для этого нужно зайти в раздел «Сервисы» -> «Sphinx» или перейти по ссылке https://cp.beget.com/cloudservices/sphinx/. Выбираем необходимый тариф и включаем демон полнотекстового поиска:
Далее переходим на вкладку «Индексация» -> «Редактор конфигурации», вставляем скопированное ранее содержимое конфигурационного файла (с удалением строки «infix_fields=»), и нажимаем «Сохранить»:
Переходим на вкладку «Поисковый сервер» и включаем его.
Так как используются индексы реального времени, необходимо полностью проиндексировать сайт, для этого снова переходим во вкладку «Морфология» панели управления сайтом, в выпадающем списке меню «Полнотекстовый поиск с помощью» выбираем «Sphinx» и нажимаем «Применить».
После применения изменений появится сообщение о необходимости полностью проиндексировать сайт, нажимаем на «Переиндексировать сайт»:
Попав на страницу индексации снимаем галочку «Проиндексировать только измененные» и нажимаем «Переиндексировать»:
Настройка полнотекстового поиска закончена! Проверить работу поиска можно на Вашем сайте.
Если при установке или настройке возникли проблемы, Вы можете обратиться в нашу техническую поддержку — мы с радостью поможем и ответим на все Ваши вопросы.
08.12.2021
Для поиска в проектах построенных на 1C-Битрикс для поиска можно использовать внешнюю систему полнотекстового поиска Sphinx. Она быстро работает и имеет возможности гибкой конфигурации.
Одна из таких функций — словоформы (wordforms). Словоформы позволяют поиску выдавать одни и те же результаты не зависимо от того какую словоформу пользователь ввел. Например, можно настроить, чтобы слова «жигуль», «лада» и «ваз» приводили к одним и тем же результатам.
И вот тут у многих, судя по вопросам без ответов на просторах интернета, начинаются проблемы. Эти словоформы «не работают». Думаю эта статья поможет решить данную проблему. Я привожу три момента на которые стоит обратить внимание
Как правило, конфигурирование Sphinx начинают c конфига предлагаемого в админке Битрикс и среди прочего в том конфиге есть следующая строка
morphology = stem_enru, soundex
Для настройки словоформ необходимо в этот конфиг добавить подключение файла.
wordforms = /etc/sphinxsearch/wordforms.txt
Название и расположение файла вы можете выбрать самостоятельно — я разместил в каталоге где размещается конфиг файл системы поиска. Так же необходимо предоставить права пользователю от которого работает поиск.
Первый момент
По умолчанию на Debian это «sphinxsearch» на CentOS «sphinx»
soundex — подключает фонетический алгоритм при разборе фразы. Т.е. например слова «hummer» и «hamer» фонетически звучат одинаково и будут этим алгоритмом приведены к единому значению. И вот на этом этапе возникает первая проблема со словоформами.
Добавляем в словоформы (в файл wordforms.txt) форму слова в ожидании, что она будет приводить к тому же результату
хаммер => hummer
Однако это правило не сработает. Все дело в том, что слово hummer преобразуется фонетическим алгоритмом. Для проверки этого подключимся из консоли к Sphinx
mysql -h 127.0.0.1 -P 9306
И в открывшейся SQL консоли введем команду
call keywords('hummer hamer хаммер','bitrix',1);
В команде первый параметр — анализируемая строка, второй: имя индекса как в конфиге, третий (не обязательный) включает вывод двух колонок статистики. В результате этой команды мы получим следующий вывод:
+------+--------------+--------------+------+------+ | qpos | tokenized | normalized | docs | hits | +------+--------------+--------------+------+------+ | 1 | hummer | h560 | 0 | 0 | | 2 | hamer | h560 | 0 | 0 | | 3 | хаммер | hummer | 0 | 0 | +------+--------------+--------------+------+------+
Как видим «hummer» и «hamer» были нормализованы к одному значению и оба слова будут приводить к одному результату поиска, ровно тому, который мы и ожидаем, а вот «хаммер» нормализовался к «hummer» — и уже не будет сопоставлен с теми же результатами. Т.к. «реальный» hummer нормализовался к другому значению.
Так происходит в результате последовательности обработки фраз. Для исправления ситуации необходимо дополнить wordforms.txt
хаммер => hummer hummer => hummer
Теперь результат команды call keywords выглядит так
+------+--------------+------------+------+------+ | qpos | tokenized | normalized | docs | hits | +------+--------------+------------+------+------+ | 1 | hummer | hummer | 0 | 0 | | 2 | hamer | h560 | 0 | 0 | | 3 | хаммер | hummer | 0 | 0 | +------+--------------+------------+------+------+
Как видим осталась проблема со словом «hamer». Для ее решения есть два варианта. Первый это по примеру «хаммер» добавить прямое соответствие, но тогда придется добавлять строчки для каждой формы, которая нам подошла с точки зрения морфологии. Чтобы этого не делать есть второй путь: добавить в начале строки знак тильду — это отменит необходимость перечислять все морфологические формы.
хаммер => hummer ~hummer => hummer
Вот теперь все будет связано воедино и все три слова, введенные в строку запроса, будут приводить к одному и тому же результату.
+------+--------------+------------+------+------+ | qpos | tokenized | normalized | docs | hits | +------+--------------+------------+------+------+ | 1 | hummer | hummer | 0 | 0 | | 2 | hamer | hummer | 0 | 0 | | 3 | хаммер | hummer | 0 | 0 | +------+--------------+------------+------+------+
Как вывод из всего этого: прежде чем добавлять очередную форму посмотрите на то как анализирует Sphinx эту форму и основное слово командой call keywords
Второй момент
Sphinx работает с кодировкой UTF-8. Соответственно и файл wordforms.txt должен быть в этой кодировке.
Третий момент
Для того, чтобы вносимые изменения вступали в силу необходимо не только перезапустить Sphinx. Необходимо остановить службу, удалить файлы индексов. Путь к ним указан в конфигурационном файле системы поиска, а разделе настройки того индекса, с котором работаете в параметре path
Все записи