Технический сбой

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

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


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

вопрос
Есть сайт с несколькими тысячами постов (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 - -

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

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

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

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

наверх