За последние 24 часа нас посетили 22689 программистов и 1602 робота. Сейчас ищут 832 программиста ...

Поиск и сортировка в большом файле

Тема в разделе "PHP для новичков", создана пользователем блудный сын, 26 ноя 2008.

  1. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    А без sort памяти хватает?
     
  2. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    тоже нет :(
    Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 35 bytes)
     
  3. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Плохие факты :( На глаз выходит даже и не прикинешь, сколько памяти нужно для работы скрипта.
     
  4. Geqsogen

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

    С нами с:
    7 ноя 2008
    Сообщения:
    11
    Симпатии:
    0
    блудный сын
    Просто у меня похожая ситуация только с dbf файлом размером 70 метров - я долго думать не стал - загоняю сначала в mssql (mysql и др. - кому как нравится) - и там уже делаю сортировку и выборку - не надо искать трудных путей...
     
  5. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    А у меня кстати Ваш пример выдает 92200, т.е. в 92 раза. Это нормально и зависит от версии РНР?
     
  6. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Мне бы этого очень не хотелось :( Сейчас у меня все так красиво разложено по файлам. Все видно и наглядно. Осталось только эти файлы отсортировать и организовать по ним поиск. Не хотелось бы устанавливать дополнительное ПО и прятать их в базу :(
     
  7. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    Нужно обработать 100 метров (!) при 8 метрах ограничении.
    Забудте про file, file_get_content, etc.
    Только построкавая обработка.

    Для теста, сечас обрабатываю через SQLite текстовый файл в 867 215 500 байт, с ограничением памяти в 200 кб. Пока все хорошо.

    Начать юзать SQLite просто. Не требует никакого дополнительного софта, только расширение php (pdo и pdo_sqlite). Синтаксис SQL стандартный. Лицензия наисвободнейшая. Чуть менее чем на всех хостингах он включен.
    Не вижу проблемы.
     
  8. Xerk

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

    С нами с:
    5 окт 2007
    Сообщения:
    177
    Симпатии:
    0
    Адрес:
    Владивосток
    Это работа для баз данных. Пхп совсем не заточен под такую работу.
    Если даже поднять лимит использования памяти, это не поможет. Достаточно небльшое количество посетителей будет вешать машину с сервером.
    sqlite конечно хорошо, но тут лучше полноценный сервер баз данных, ИМХО.

    добавлено:
    Хотя как я понимаю, добавление будет происходить не часто. SQLite пожалуй все-таки идеально подойдет.
     
  9. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    обижаешь, с SQLite в данном случае будет быстрее. И чем не полноценная база данных?
     
  10. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. <?php
    2. `sort test.txt > test-sort.txt`
     
  11. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Ti, так мне достаточно раскомментировать в php.ini эут строку ;extension=php_pdo_sqlite.dll и Ваш код сразу же будет работать?
     
  12. Xerk

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

    С нами с:
    5 окт 2007
    Сообщения:
    177
    Симпатии:
    0
    Адрес:
    Владивосток
    Ti, SQLite не очень хорошо работает если часто делаются вставки.
     
  13. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Не, в моем случае файлы статические и изменяться после сортировки не будут. По ним только поиск нужного будет проводиться.
    А что это если не секрет?
     
  14. Xerk

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

    С нами с:
    5 окт 2007
    Сообщения:
    177
    Симпатии:
    0
    Адрес:
    Владивосток
    это команда для операционной системы

    Ti Хм, не знал. Надо будет внимательней ознакомиться, может когда буду использовать SQLite, пригодится.
     
  15. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    Xerk
    Не правда. Используйте транзакции.

    раскомментировать нужно две строчки:
    ;extension=php_pdo.dll
    ;extension=php_pdo_sqlite.dll
     
  16. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    А она тут для размышлений была дана или ее можно запустить и она отсортирует?
     
  17. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
     
  18. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    А у меня нет в php.ini первой строчки. Вторая есть. Подскажите, что это означает и что нужно сделать в этом случае?
     
  19. Xerk

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

    С нами с:
    5 окт 2007
    Сообщения:
    177
    Симпатии:
    0
    Адрес:
    Владивосток
    при условии что выполнение системных команд не запрещено настройками.
    Точнее тут сказать не могу. Не было необходимости пользоваться. Да и без крайней необходимости предпочитаю не использорвать.
     
  20. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Раскройте секрет как ее запустить?
     
  21. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. <?php
    2. `sort test.txt > test-sort.txt`
    =)
     
  22. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    самому вписать (только перед pdo_sqlite)
    и проверить что есть файл: путь\до\php\ext\php_pdo.dll


    из-под unix
     
  23. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Тока не понятно, почему dll, если *nix? Или windows?
     
  24. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    с чего взял??
     
  25. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Чё-то я тупанул