За последние 24 часа нас посетили 16936 программистов и 1299 роботов. Сейчас ищут 1504 программиста ...

sphinx+php. не хватает памяти

Тема в разделе "Прочие вопросы по PHP", создана пользователем cyklop77, 4 май 2011.

  1. cyklop77

    cyklop77 Активный пользователь

    С нами с:
    11 авг 2010
    Сообщения:
    10
    Симпатии:
    0
    прошу помощи в такой проблеме.
    на 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



    подскажите как ее победить.

    вот конфиг сфинкса


    Код (Text):
    1. # Источник данных для поиска
    2. source jos_content
    3. {
    4. # Тип данных
    5. # Доступные типы: mysql, pgsql, mssql, xmlpipe, xmlpipe2, odbc
    6. type            = mysql
    7.  
    8. # Необходимые параметры для подключения к базе данных
    9. sql_host        = localhost
    10. sql_user        = root
    11. sql_pass        =
    12. sql_db      = joomla_vm
    13. sql_port        = 3306  # опциональный, по умолчанию 3306
    14.  
    15. # пред-запрос, выполняется перед выполнением основного запроса на получение данных из базы
    16. # В нашей базе данные хранятся в UTF-8, чтобы поиск по русским символам работал успешно выполним соответсвующий запрос
    17. sql_query_pre       = SET NAMES utf8
    18.  
    19. # запрос, который получает данные документов для поиска
    20. # первым полем обязательно должен идти уникальный положительный ID документа
    21. sql_query  = SELECT * FROM jos_content
    22.  
    23. # поля, по которым может идти группировка, фильтрация и сортировка
    24. sql_attr_uint    = title
    25. sql_attr_uint    = introtext
    26. sql_attr_uint    = fulltext
    27.  
    28.  
    29. # document info query, ONLY for CLI search (ie. testing and debugging)
    30. # optional, default is empty
    31. # must contain $id macro and must fetch the document by that id
    32. sql_query_info      = SELECT * FROM jos_content WHERE id=$id
    33. }
    34.  
    35. # индекс каталога товаров для поиска
    36. index jos_content
    37. {
    38. # Источник данных для индексирования
    39. source            =  jos_content
    40.  
    41. # Адрес, где будут хранится данные индекса
    42. path        = /var/lib/sphinxsearch/data/jos_content
    43.  
    44. # Индекс с учетом морфологии
    45. morphology        = stem_ru
    46.  
    47. # Минимальная длина слова для индексации
    48. min_word_len        = 1
    49.  
    50. # Кодировка
    51. charset_type        = utf-8
    52. }
    53.  
    54.  
    55.  
    56. indexer
    57. {
    58.         # Лимит памяти, который может использавать демон-индексатор
    59.         mem_limit                       = 1024M
    60. }
    61.  
    62.  
    63. # поисковый демон (служба)
    64. searchd
    65. {
    66. # какой порт и какой протокол "слушает" служба
    67. listen       = localhost:3307:mysql41
    68. #9312
    69.  
    70. # файл с логами
    71. log              = /var/log/sphinxsearch/searchd.log
    72.  
    73. # файл с логами поисковых запросов
    74. query_log        = /var/log/sphinxsearch/query.log
    75.  
    76. # PID file, searchd process ID file name
    77. # mandatory
    78. pid_file        = /var/run/searchd.pid
    79. }
    80.  


    вот мои пхп-скрипт


    PHP:
    1. <?PHP
    2.  
    3. ini_set("memory_limit", "1024M");
    4.  
    5. require_once 'sphinxapi.php';
    6. $client = new SphinxClient or die('eerr');
    7.  
    8. $client->SetLimits(1,10); // page, count
    9. $client->SetArrayResult(true); // возвращать данные массивом
    10. #$client->SetServer("localhost", 3312);
    11.  
    12. /**
    13. * Передаем запрос, перечисляем ндексы
    14. * Получаем специфический массив
    15. * Просто сдампите его, чтобы увидеть структуру
    16. *
    17. */
    18. $result = $client->Query('joomla', '*');
    19.  
    20. if ( $result === false )
    21. {
    22.    $jhash['status'] = 'failed';
    23.    $jhash['status_message'] = $client->GetLastError();
    24. }
    25.  
    26. echo '<pre>';
    27. print_r($jhash);
    28. echo '</pre>';
    29.  
    30. echo '<pre>';
    31. print_r($result);
    32. echo '</pre>';
    33. ?>


    в классе тоже прописан порт 3312

    физически память есть.
    пробовал через .htaccess увеличить мемори лимит. то же

    читал
    http://sphinxsearch.com/forum/view.html?id=1178
    и
    http://sphinxsearch.com/forum/se...+size+of&f=1
    не помогло