Если у тебя все строчки добавлялись в файл по этому принципу, то можно считать последнюю строку, "выдрать" из нее номер, добавить к нему единицу и записать в новую:
PHP код:
$f = fopen('file', 'a+');
$str = '';
for ($i = -1, $cnt=0; $cnt < 1; $i--) // <2 если после добавления строки перевод на новую строку
{
fseek($f, $i, SEEK_END);
$tmp = fread($f, 1);
if ($tmp == "\n")
{
$cnt--;
}
else
{
$str .= $tmp;
}
}
fseek($f, 0, SEEK_END);
$str = strrev($str);
Как выдрать номер, одному богу да тому, кто в файл писал, известно. Используй регексп
[upd]
А по поводу установки указателя в нужное место, имхо тут нужен поиск по файлу по методу (не помню как называется, поэтому будет так) случайных чисел.
Суть метода:
• fseek'ом переещаемся в позицию rand(0, filesize($file))
• считываем ближайшую строку
• выдираем из нее номер, если он больше нужного, то изменяем большую границу в rand на текущее положение, меньше - меньшую соответственно.
• возвращаемся в первый пункт
Таким образом гуляем по файлу, пока е найдем нужную строку.
Хоть алгоритм и кажется долгодействующим и неработоспособным - это далеко не так. На ленте препод за 10 переходов угадал загаданное от 0 до 1000 число.