ФорумПрограммированиеPHP для идиотов → Прочесть n случайных строк из файла

Прочесть n случайных строк из файла

  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 15 ноября 2009 г. 18:39

    Как лучше реализовать чтение n случайных/указанных строк из текстового файла размером более допустимого PHP_ MAX_FILE_SIZE?
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 15 ноября 2009 г. 18:53, спустя 13 минут 52 секунды

    Ewg777, сгенерировать n случайных номеров строк
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 15 ноября 2009 г. 18:54, спустя 42 секунды

    fgets + fseek
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 15 ноября 2009 г. 19:25, спустя 31 минуту 25 секунд


    fgets + fseek
    fseek по байтам двигает.
    Ewg777, сгенерировать n случайных номеров строк
    И как выбрать эти строки из файла?


    $handle = fopen('text.txt', "r");
    $data = array(1, 5, 10);
    while (!feof($handle)) {
    $temp = fgets($handle);
    if (in_array($i, $data)) {
    $needed[] = $temp;
    if (count($needed)===count($data)) {
    break;
    }
    }
    $i++;
    }
    fclose($handle);
    разве красивое решение?
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 15 ноября 2009 г. 20:12, спустя 46 минут 48 секунд

    Просто раз данные большие, то такое

    $file = file('file.txt');
    $data = array(5, 7, 12);
    for ($i=0, $a=count($data), $i >= $a) {
    echo $file[$data[$i]];
    }


    не катит
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 15 ноября 2009 г. 21:04, спустя 51 минуту 45 секунд

    Troy, почитай условие )

    Ewg777, в случае рандомных строк: а надо ли оно, сначала придумывать номера строк, а потом искать их? Взяли рандомное смещение - попали в середину рандомной строки, выкинули всё до её конца (\n) - вот она рандомноя строка.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 16 ноября 2009 г. 8:16, спустя 11 часов 11 минут 49 секунд

    vasa_c, это так.

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

Пожалуйста, авторизуйтесь, чтобы написать комментарий!