К примеру, на сайте есть 100500 постов. Запускается скрипт, который находит нужные посты при помощи регулярного выражения (MySQL). Допустим, что скрипт обходит 500 постов за один запуск, в конце своей работы записывает ID поста и при следующем запуске продолжает работу.
Как определить количество пройденных новостей в % зная ID поста, на котором остановился скрипт?
Ну судя по всему скрипт должен запоминать кол-во пройденных постов, чтобы при следующей выборке делал оффсет. Так вот делим этот оффсет на общее кол-во постов и если нужно чтобы % был от 0 до 100 то умножаем на 100
anna_makeenko, все можно, даже на лету, но тогда надо на лету считать количество записей до последней отметки и всего. Нужен какой-то критерий, который в сферической в вакууме базе данных определить невозможно. Хранить ID записи все-равно где-то придется. а так COUNT(...)*100/COUNT(...) никто не отменял.
Только вот задача, исходя из текста вопроса, должна решаться со стороны php. Если скрипт прерывается или имеет какие-то особенности то тут база данных не при чем становится резко.
anna_makeenko, это не проблема как раз. Просто вы решаете проблему, которую не озвучиваете полностью и мы не можем вам помочь из-за не знания контекста. Выбрали какую-то часть просто
Сайт, на сайте 100500 записей, нужно обработать все записи, текст которых попадает под regex.
Посты удаляются/добавляются.
Выборка:
SELECT * FROM `posts` WHERE `text` REGEXP '$pattern' WHERE `id` > $lact_checked_id LIMIT 500;
Далее идет обработка на PHP:
foreach ($posts as $post) {
//
$last_checked_id = $post['id'];
}
Хотелось бы отобразить ход выполенния задачи в %, можно сохранять количество пройденных постов, как предлагаете вы, но кажется счетчик будет работать неправильно, если посты будут удаляться/добавляться.
anna_makeenko, вот и отлично, у вас нет проблемы подсчета, у вас только не уверенность когда завершится и как это будет. Добавьте колонку в таблицу с маркером факта обработки. По ней и мониторе остаток. По окончанию можно колонку удалить