[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: sphinx+php. не хватает памяти
cyklop77
прошу помощи в такой проблеме.
на 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

Спустя 3 часа, 26 минут, 54 секунды (4.05.2011 - 16:29) cyklop77 написал(а):
ставил 16. не помогает.

в 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. а библиотеку скачал отдельно с официального сайта. возможно правильнее было бы воспользоваться установленной. но дело в том что непонятно откуда брать - пакет установился и всё, я только конфиг нахожу и файл для запуска...
может кто в курсе как правильно надо было поступить?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.