на debian6 поставил lamp+sphinx. проиндексировал нужную таблицу в БД (очень небольшая таблица. строк 100) и решил сделать поиск для пользователей, используя пхп.
но браузер показывает ошибку
PHP:
скопировать код в буфер обмена
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 775499123 bytes) in /var/www/sphinx/api/sphinxapi.php on line 635
подскажите как ее победить.
вот конфиг сфинкса
# Источник данных для поиска
source jos_content
{
# Тип данных
# Доступные типы: mysql, pgsql, mssql, xmlpipe, xmlpipe2, odbc
type = mysql
# Необходимые параметры для подключения к базе данных
sql_host = localhost
sql_user = root
sql_pass =
sql_db = joomla_vm
sql_port = 3306 # опциональный, по умолчанию 3306
# пред-запрос, выполняется перед выполнением основного запроса на получение данных из базы
# В нашей базе данные хранятся в UTF-8, чтобы поиск по русским символам работал успешно выполним соответсвующий запрос
sql_query_pre = SET NAMES utf8
# запрос, который получает данные документов для поиска
# первым полем обязательно должен идти уникальный положительный ID документа
sql_query = SELECT * FROM jos_content
# поля, по которым может идти группировка, фильтрация и сортировка
sql_attr_uint = title
sql_attr_uint = introtext
sql_attr_uint = fulltext
# document info query, ONLY for CLI search (ie. testing and debugging)
# optional, default is empty
# must contain $id macro and must fetch the document by that id
sql_query_info = SELECT * FROM jos_content WHERE id=$id
}
# индекс каталога товаров для поиска
index jos_content
{
# Источник данных для индексирования
source = jos_content
# Адрес, где будут хранится данные индекса
path = /var/lib/sphinxsearch/data/jos_content
# Индекс с учетом морфологии
morphology = stem_ru
# Минимальная длина слова для индексации
min_word_len = 1
# Кодировка
charset_type = utf-8
}
indexer
{
# Лимит памяти, который может использавать демон-индексатор
mem_limit = 1024M
}
# поисковый демон (служба)
searchd
{
# какой порт и какой протокол "слушает" служба
listen = localhost:3307:mysql41
#9312
# файл с логами
log = /var/log/sphinxsearch/searchd.log
# файл с логами поисковых запросов
query_log = /var/log/sphinxsearch/query.log
# PID file, searchd process ID file name
# mandatory
pid_file = /var/run/searchd.pid
}
вот мои пхп-скрипт
<?PHP
ini_set("memory_limit", "1024M");
require_once 'sphinxapi.php';
$client = new SphinxClient or die('eerr');
$client->SetLimits(1,10); // page, count
$client->SetArrayResult(true); // возвращать данные массивом
#$client->SetServer("localhost", 3312);
/**
* Передаем запрос, перечисляем ндексы
* Получаем специфический массив
* Просто сдампите его, чтобы увидеть структуру
*
*/
$result = $client->Query('joomla', '*');
if ( $result === false )
{
$jhash['status'] = 'failed';
$jhash['status_message'] = $client->GetLastError();
}
echo '<pre>';
print_r($jhash);
echo '</pre>';
echo '<pre>';
print_r($result);
echo '</pre>';
?>
в классе тоже прописан порт 3312
физически память есть.
пробовал через .htaccess увеличить мемори лимит. то же
читал
http://sphinxsearch.com/forum/view.html?id=1178
и
http://sphinxsearch.com/forum/se...+size+of&f=1
не помогло
Спустя 38 минут, 32 секунды (4.05.2011 - 13:03) VELIK505 написал(а):
mem_limit поставь 16 метров. и php.ini покажи.
и чё там в 635 строчке? в sphinxapi.php
и чё там в 635 строчке? в sphinxapi.php
Спустя 3 часа, 26 минут, 54 секунды (4.05.2011 - 16:29) cyklop77 написал(а):
ставил 16. не помогает.
в 635 строке это
вот ссылки на эти файлы
http://narod.ru/disk/11892011001/sphinxapi.php.html
http://narod.ru/disk/11892191001/php_ini.txt.html
в 635 строке это
$chunk = fread ( $fp, $left );
вот ссылки на эти файлы
http://narod.ru/disk/11892011001/sphinxapi.php.html
http://narod.ru/disk/11892191001/php_ini.txt.html
Спустя 16 минут, 51 секунда (4.05.2011 - 16:46) waldicom написал(а):
Цитата (cyklop77 @ 4.05.2011 - 14:29) |
ставил 16. не помогает. |
Апача (веб сервер) после этого перезапускался?
Спустя 6 минут, 53 секунды (4.05.2011 - 16:53) VELIK505 написал(а):
/etc/init.d/apache2 restart
так помойму на дебиане перезапускать перезапусти
так помойму на дебиане перезапускать перезапусти
Спустя 1 час, 55 минут, 2 секунды (4.05.2011 - 18:48) cyklop77 написал(а):
перезапускал, не в этом причина. я индексировал табличку, в которой около 100 строк. памяти должно хватать
Спустя 1 минута, 31 секунда (4.05.2011 - 18:50) waldicom написал(а):
Цитата (cyklop77 @ 4.05.2011 - 16:48) |
перезапускал, не в этом проблема. я индексировал табличку, в которой около 100 строк. памяти должно хватать |
Я, может быть, сейчас глупость скажу, так как не работал с sphinx, но как связаны между собой поиск(sphinx) и открытие файла(fopen)?
Спустя 16 минут, 22 секунды (4.05.2011 - 19:06) cyklop77 написал(а):
пожалуй да.
вобщем скрипт этот lamp-у не нравится. и скорее всего проблема во встроенной в этот скрипт инструкцией require библиотеке. но библиотеку я не правил.
установил сфинкс так aptitude install sphinxsearch. а библиотеку скачал отдельно с официального сайта. возможно правильнее было бы воспользоваться установленной. но дело в том что непонятно откуда брать - пакет установился и всё, я только конфиг нахожу и файл для запуска...
может кто в курсе как правильно надо было поступить?
вобщем скрипт этот lamp-у не нравится. и скорее всего проблема во встроенной в этот скрипт инструкцией require библиотеке. но библиотеку я не правил.
установил сфинкс так aptitude install sphinxsearch. а библиотеку скачал отдельно с официального сайта. возможно правильнее было бы воспользоваться установленной. но дело в том что непонятно откуда брать - пакет установился и всё, я только конфиг нахожу и файл для запуска...
может кто в курсе как правильно надо было поступить?