Найти изменения в новой версии файла

125
09 февраля 2021, 22:20

Есть две версии файла, старая и новая. Нужно найти изменения и записать новые строки в базу данных. Сейчас он начинает записывать все строки по новой, почему?

// Подготовка к скачиванию
$url = 'http://www.xxxxx.xx/xxx.txt';
$path = __DIR__ . '/list.txt';
$pathOld = __DIR__ . '/listOld.txt';
// Скачивание файла
if (!@copy($url, $path)) {
    $errors = error_get_last();
    echo "Ошибка: " . $errors['type'];
    echo "<br />\n" . $errors['message'];
} else {
    echo "Файл скачан!";
}
// Хеш старого файла
$sha1Old = sha1_file($pathOld);
// Хеш нового файла
$sha1New = sha1_file($path);

// Если файл изменился
if($sha1Old != $sha1New){
    $host = "localhost";
    $dbname = "xxxx";
    $user = "xxxx";
    $pass = "xxxx";

    $fNew = fopen($path, "r"); // Открываем новый файл в режиме чтения
    $fOld = fopen($pathOld, "r"); // Открываем старый файл в режиме чтения
    // Если файлы открылись
    if ($fNew and $fOld) {
        $i = 0;
        $db = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
        $sql = "INSERT INTO terms(term,value,url)  VALUES (:term, :value, :url);";
        $sth = $db->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
        // Цикл до конца файла
        while (!feof($fNew)) {
            $newFileString = fgets($fNew, 2000);
            $oldFileString = fgets($fOld, 2000);
            // Если не равен - значит добавлена новая строка
            if($newFileString != $oldFileString){
                $newStringArray = explode(';', $newFileString);
                $term = $newStringArray[0];
                $value = $newStringArray[1];
                $url = $newStringArray[2];
                $sth->execute(array(
                    ':term' => $term, 
                    ':value' => $value,
                    ':url' => $url
                ));
                print_r($newStringArray[0]."<br>");
            }
        }
    } else echo "Ошибка при открытии файла";
    fclose($fNew);
    fclose($fOld);
} else{
    echo "Файл не изменился.";
}
READ ALSO
Не отображается div на сайте

Не отображается div на сайте

Не отображается div на странице, что бы не пытался сделатьПричем в index точно такой же код отображается как обычно

121
Это pluggable функция

Это pluggable функция

Мне нужно использовать функцию check_ajax_referer() в плагине для проверки переданного значения, но в описании пишется:

101
Проклятье массива на php

Проклятье массива на php

Помогите новичку не могу понять как записать в массив в цикле значение, записываю таким вот образом

139