Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
1)Генеришь рандомные номера строк.
2)В цикле вызываешь fgets, если номер текущей строки == одному из сгенерённых номеров - сохраняешь строку куданить.Код:rand(min, max)
<?php
$countstr = 5; # Кол-во строк какое нужно
$file = file('file.txt'); # Файл который парсить
for($i=0;$i<$countstr;$i++){
$randstr[$i] = $file[rand(0,count($file))];
}
echo "<pre>";
print_r($randstr);
echo "</pre>";
?>
<?php
$countstr = 5; # Кол-во строк какое нужно
$file = file('file.txt'); # Файл который парсить
for($i=0;$i<$countstr;$i++){
$randstr .= $file[rand(0,count($file))]."<br>\n";
}
echo $randstr;
?>
Вот с этим согласен, если не делать вывод работы скрипта на экран, а делать вывод результата в файл, то будет в разы быстрее, так будет только интерпретатор выполнять скрипт, а если с выводом, то будет ещё и апач напрягаться.Вариант два - делать не через пхп, а это "не" вызывать через командную строку через пхп..
Работать будет в разы быстрее.
О боже программисты тут понасобрались, уж если не знаете не советуйте что ли...
Это пример в котором в переменную $randstr будет массив строк случано выбраных из файла.Код:<?php $countstr = 5; # Кол-во строк какое нужно $file = file('file.txt'); # Файл который парсить for($i=0;$i<$countstr;$i++){ $randstr[$i] = $file[rand(0,count($file))]; } echo "<pre>"; print_r($randstr); echo "</pre>"; ?>
Это пример в котором в переменную $randstr будет сложены все строки в одну и разделена переносами.Код:<?php $countstr = 5; # Кол-во строк какое нужно $file = file('file.txt'); # Файл который парсить for($i=0;$i<$countstr;$i++){ $randstr .= $file[rand(0,count($file))]."<br>\n"; } echo $randstr; ?>
Добавлено через 2 минуты
Вот с этим согласен, если не делать вывод работы скрипта на экран, а делать вывод результата в файл, то будет в разы быстрее, так будет только интерпретатор выполнять скрипт, а если с выводом, то будет ещё и апач напрягаться.
<?php
$file = 'test.txt';
$stringsCount = 5;
// Первый этап: подсчет количества строк
$counter = 0;
$fr = fopen($file, 'r');
while (($line = fgets($fr)) !== false) {
if(strlen($line) > 0) {
$counter++;
}
}
fclose($fr);
unset($line);
// Этап второй: заполняем номера строк, которые нам нужны
$numbers = array();
while ($stringsCount) {
$tempNum = rand(1, $counter);
if(in_array($tempNum, $numbers)) {
continue ;
} else {
$numbers[] = $tempNum;
$stringsCount--;
}
}
unset($stringsCount, $tempNum, $counter);
// Этап третий: непосредственное чтение файла и выбор нужных строк
$fr = fopen($file, 'r');
$pointer = 1;
$strings = array();
while (($line = fgets($fr)) !== false) {
if(in_array($pointer, $numbers)) {
$strings[] = $line;
}
$pointer++;
}
fclose($fr);
print_r($strings);
?>
Вариант два - делать не через пхп, а это "не" вызывать через командную строку через пхп..
Работать будет в разы быстрее.
Твой рабочий скрипт, извеняюсь я что-то не глянул что там размер 500метров, а вообще зависит от сервака и его ресурсов.Ты сам головой бы подумал, как 500 метров будешь в массив Для просмотра ссылки Войдиили Зарегистрируйся? Ыыы.
ТС: сейчас накидаю тебе нужное скрипто -выложу
Добавлено через 22 минуты
Вот результат, вообщем. Пясал недолго - за качество не пинать. Ну и доработать, может, где нада )
PHP:<?php $file = 'test.txt'; $stringsCount = 5; // Первый этап: подсчет количества строк $counter = 0; $fr = fopen($file, 'r'); while (($line = fgets($fr)) !== false) { if(strlen($line) > 0) { $counter++; } } fclose($fr); unset($line); // Этап второй: заполняем номера строк, которые нам нужны $numbers = array(); while ($stringsCount) { $tempNum = rand(1, $counter); if(in_array($tempNum, $numbers)) { continue ; } else { $numbers[] = $tempNum; $stringsCount--; } } unset($stringsCount, $tempNum, $counter); // Этап третий: непосредственное чтение файла и выбор нужных строк $fr = fopen($file, 'r'); $pointer = 1; $strings = array(); while (($line = fgets($fr)) !== false) { if(in_array($pointer, $numbers)) { $strings[] = $line; } $pointer++; } fclose($fr); print_r($strings); ?>
$randstr = rand (1, filesize($keywd));
fseek ($keywd, $randstr);
$str = fgets ($keywd);
$str = fgets ($keywd);
echo ("<br>$str");