Допустим есть такой код:
<?php
function getlist($string){
 if($string>0 && file_exists('./list.txt') && filesize('./list.txt')>=($string*2)){
  $list=fopen('./list.txt', 'a+');
  fseek($string*2-2);
  return fgets($list, 1);
 }
}
function putlist($data){
 if($data){
  $data=substr($data, 0, 1);
  file_put_contents('./list.txt', $data."\n", FILE_APPEND);
 }
}
Это упрощённый вариант, нет блокировок.
Тут вводимая строка сокращается до одного символа, но в реальности будет больше и строк будет много (list.txt больше 1 ТБ).
Как избежать повторения строк без потери производительности?
Можно попробовать так:
$data=$_GET['data']; //$data=='d';
for($i=1; $d=getdata($i), $d; $i++){
 if($d===$data){
  $cancel=true;
  break;
 }
}
if(!$cancel)
 putdata($data);
Но при больших объёмах данных такой способ не подходит.
Как, например, google убирает повторяющиеся ссылки из индексирования?