PHP: Как получить случайную строку в большом файле быстрее?

0

У меня есть 1 файл txt со 100 000 строк. Можете ли вы узнать, как можно получить 1 строку быстрее всего? Большое спасибо !

  • 0
    почему бы вам не сравнить свои идеи ... $line = file($filename)[rand(0,100000)]; может быть один тест, который вы запускаете
  • 1
    Вам придется зацикливаться, чтобы найти количество строк. Смотрите этот ответ stackoverflow.com/a/20537130/1281385
Показать ещё 2 комментария
Теги:
performance
line

1 ответ

1
Лучший ответ

Самый быстрый способ - создать индекс (простой массив, содержащий позицию в файле каждой новой строки). Затем выберите случайный ключ, получите позицию, fseek файл в эту позицию и прочитайте строку. Это потребует обновления индексного файла в любое время, когда вы измените файл, но если вы хотите оптимизировать извлечение данных, это так.

Вы можете еще больше оптимизировать, разделив файл в диапазонах (например, очертить данные) или имея несколько представлений файла (например, вы можете иметь файл с перевернутыми линиями, поэтому последний должен быть первым, а если ваше случайное число больше половины элементы, которые вы читаете из второго файла)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню