За последние 24 часа нас посетили 16638 программистов и 1681 робот. Сейчас ищут 864 программиста ...

Массив данных в ОЗУ

Тема в разделе "PHP для новичков", создана пользователем sx000, 10 сен 2010.

  1. sx000

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

    С нами с:
    28 авг 2010
    Сообщения:
    35
    Симпатии:
    0
    Требуется загрузить файл с данными в массив и хранить его в озу, причина более 1млн строк в файле, задача работа с этими данными - поиск даблов при загрузке новых строк.
    Помогите как это делаеться не могу сообразить не как. Может есть какие то более гуманные способы работы с большим объемом строчных данных, важна скорость обработки и чтоб срвак не нагружало сильно.
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    А чо, даблов не должно быть?
    Используй MySQL, используй уникальные поля.
     
  3. sx000

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

    С нами с:
    28 авг 2010
    Сообщения:
    35
    Симпатии:
    0
    Да даблов не должно быть плюс надо делать на против строк пометки небольшие. Ну велосипед по сути тот же MYSQL.
    Но я не умею работать с ней на достаточно грамотном уровне, чтобы не нагружать сам MYSQL тупыми запросами, ну пока так ... вот решил что оптимально будет работать с файловым массивом загруженным в озу, тк обращений будет в секунду несколько десятков, а если учесть что даблы искать да и выборки делать с пометками это будет просто кирдык.
     
  4. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    оптимально - MySQL.
    грузить в память млн строк при каждом обращении - сервер сдохнет
    уже при нескольких запросах в секунду. просто памяти не хватит :)
     
  5. Ensiferum

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

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    - увеличивай выделяемую память через ini_set("memory_limit","128M");
    - оптимизируй код как только это возможно
     
  6. voxel

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

    С нами с:
    8 сен 2010
    Сообщения:
    19
    Симпатии:
    0
    Храните данные в кеше. Оптимально - memcache. Другие варианты - berkley db, файловый кеш. Ключ для кеша - md5(строки) например. И дублирующихся строк не будет, и MySQL разгрузите.
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Делайте так:
    Mysql -> загрузка из файла в таблицу -> insert into tbl2 from (select distict.row from tbl1) as t1
     
  8. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    +1
    самое оно
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    sx000
    проще работы с мускулом думаешь выйдет? =)) хреначо. учи мускул, там осваивать минут десять, а дублированные строки он ищет на ура - у него индексы есть! :D
     
  10. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Если вместо того, чтобы тратить время на занятие подобной фигнёй, потратить его на изучение основ MySQL, это будет гораздо полезнее, как для данной задачи, так и для последующих.