Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как реализовать перегенерацию id новостей в DLE 13?

Как реализовать перегенерацию id новостей в DLE 13?


     25.09.2019    Общие вопросы по PHP, Хаки    1063

вопрос
Есть сайт с несколькими тысячами постов (4к). Некоторые новости удалены, добавлялись новые. Счетчик id перевалил за 15к, получается что имеем кучу пробелов по id. На основе этого сайта делается новый схожий, перегенерированы все altname, а вот с id загвоздка. Нужно пересобрать все посты сбросив счетчик id на 1 ну и дальше по порядку. Делал ли кто такое и возможно ли?

Ответил: wzk


Вопрос решен. Код на Node.js ниже.
const configDB = {
	connectionLimit : 100,
	host     : '127.0.0.1',
	user     : 'root',
	password : '',
	database : 'dbname',
	charset : 'utf8mb4'
};

let newID = 20000; // стартовый ID

var mysql = require('mysql');
var pool = mysql.createPool(configDB);

pool.getConnection(function(err, connection) {
    connection.query('SELECT id FROM dle_post WHERE id > 0 ORDER BY RAND()', function(err, rowsDB, fields) {
    	if (err) throw err;

    	totalservers = rowsDB.length;
    	console.log('Parsing started. Servers:', totalservers)
    	doparseData(rowsDB);
    });
});



function doparseData(rows){
	rows.forEach(function(item) {
		newID++;
		readServerData(item, 0, 0, newID);
	});
}


function readServerData(rows, attempt, ROWID, newwww){
	var item = rows
	let id = item.id;

	pool.getConnection(function(err, connection) {
	    connection.query( 'UPDATE dle_post SET id = '+newwww+' WHERE id = '+id+' ', function(err, rows) { 
	    	console.log("ID: "+ id + " > " + newwww);
	    	connection.release();
	     });
	});

	pool.getConnection(function(err, connection) {
	    connection.query( 'UPDATE dle_post_extras_cats SET news_id = '+newwww+' WHERE news_id = '+id+' ', function(err, rows) { 
	    	if (err) {
	    		console.log("dle_post_extras_cats ERR", err)
	    	}
	    	connection.release();
	     });
	});

	pool.getConnection(function(err, connection) {
	    connection.query( 'UPDATE dle_post_extras SET news_id = '+newwww+' WHERE news_id = '+id+' ', function(err, rows) { 
	    	if (err) {
	    		console.log("dle_post_extras ERR", err)
	    	}
	    	connection.release();
	     });
	});
}

1 комментарий

dj-avtosh
PHP-developer

dj-avtosh - 25 сентября 2019 16:39 -

Плюсую. Молодец.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх