Допустим есть такой код:
<?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 убирает повторяющиеся ссылки из индексирования?