Файл: inc/tools/text_dublicator/index.php
Строк: 91
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<table width="100%" align="center" class="ttable">
<tr>
<td bgcolor="#D4D0C8"><strong>Уничтожитель дубликатов </strong></td>
</tr>
<tr>
<td>
<?php
if(!function_exists('zip_open'))
{
echo 'Для работы скрипта необходим установленный <a href=http://zziplib.sourceforge.net>ZZIPlib</a><br>';
exit;
}
if(!is_writable('inc/tools/text_dublicator'))
{
echo 'Для работы скрипта необходимо установить права на запись (chmod 777) для папки <i>/text_dublicator</i> !<br> ';
exit;
}
if(!is_writable('inc/tools/text_dublicator/text'))
{
echo 'Для работы скрипта необходимо установить права на запись (chmod 777) для папки <i>/text_dublicator/text</i> !<br> ';
exit;
}
?></td>
</tr>
<tr>
<td>Файл для обработки (в ZIP архиве):
<input name="file1" type="file" id="file1" /></td>
</tr>
<tr>
<td>
<input name="execute" type="hidden" id="execute" value="true" /> <input name="Submit" type="submit" value="Обработать" /> </td>
</tr>
<tr>
<td>
<?php
if ($_POST['execute'])
{
@unlink('inc/tools/text_dublicator/archive.zip');
@unlink('inc/tools/text_dublicator/results.zip');
@unlink('inc/tools/text_dublicator/clean.txt');
$directory='inc/tools/text_dublicator/text/';
$handler = opendir($directory);
while ($file = readdir($handler)) {
if ($file != '.' && $file != '..')
{
@unlink("inc/tools/text_dublicator/text/".$file);
}
}
if (move_uploaded_file($_FILES['file1']['tmp_name'], 'inc/tools/text_dublicator/archive.zip'))
{
echo 'Архив загружен...<br>';
}
else
{
echo 'Архив не загружен...'; exit;
}
$zip = new ZipArchive;
if ($zip->open('inc/tools/text_dublicator/archive.zip') === TRUE) {
$filename=$zip->getNameIndex(0);
$zip->extractTo('inc/tools/text_dublicator/text', $filename);
$zip->close();
echo 'Архив распакован...<br>';
} else {
echo 'Ошибка при разархивировании...';
exit;
}
////////
$parts=100;
$mmc=fopen('inc/tools/text_dublicator/text/'.$filename, "r");
fseek($mmc, 0, SEEK_END);
$high = ftell($mmc);
echo "Обнаружен файл размером ".$high." байт<br>";
// Если файл превышает 100 мегабайт, будем обрабатывать его по частям
if ($high>100000000)
{
$partsize=ceil($high/$parts);
$undesyntem=0;
rewind($mmc);
$es=array();
for ($i=0; $i<=$parts; $i++)
{
ob_flush(); flush();
$obtinem=count($es);
echo "Часть $i из $parts - Элементов в уникальном массиве - $obtinem <br>";
$inceputla=$i*$partsize-1024;
// if ($undesyntem<$inceputla) $inceputla=$undesyntem;
$pinala=($i+1)*$partsize;
if ($inceputla>$high) $inceputla=$high;
if ($pinala>$high) $pinala=$high;
fseek($mmc, $inceputla);
$undesyntem=ftell($mmc);
fgets($mmc);
while ($undesyntem<$pinala)
{
fgets($mmc);
$es[]=fgets($mmc);
$undesyntem=ftell($mmc);
}
if ($i%3==0) $es=array_unique($es);
}
}
else
{
$es=file('inc/tools/text_dublicator/text/'.$filename);
echo "Файл успешно прочтён. Начато уничтожение дубликатов...<br>";
ob_flush(); flush();
$es=array_unique($es);
}
$fg=fopen('inc/tools/text_dublicator/clean.txt', 'a');
foreach($es as $hopa)
{
ob_flush(); flush();
fwrite($fg, trim($hopa)."rn");
}
fclose($fg);
//////////
$zip2 = new ZipArchive;
if ($zip2->open('inc/tools/text_dublicator/results.zip', ZipArchive::CREATE) === TRUE) {
$zip2->addFile('inc/tools/text_dublicator/clean.txt', 'clean.txt');
$zip2->close();
echo "Очистка от дубликатов закончена...<br>Файл заархивирован... <br><a href='text_dublicator/results.zip'>Скачать результат >></a>";
}
else
echo 'Ошибка при архивировании результатов <br>';
}
?> </td>
</tr>
</table>
</form>