Несколько тяжелых mysql UPDATE

12
SEO-MAN
На сайте с 25.06.2007
Offline
187
#11

База на 500 мб.

В итоге даже не только серия UPDATE,а и построчная обработка php скриптом по id записи всей базы заканчивается ошибкой, т.к. лимит для скрипта 30 секунд.

Обрабатывать текстовый бэкап базы - неинтересно как-то.

А с LIMIT как сделать? Наверно надо передавать скрипту самому себе через $_GET каждый раз следующую группу записей? И уже её в LIMIT указывать. А опыта нет, и примерчика.

Как не нажимая ссылки <a href=test.php?limits=1000>нажми</a> передавать LIMIT через $_GET?

Как то через <META HTTP-EQUIV="REFRESH" CONTENT="N;URL=адрес"> ???

А в самом скрипте читаем этот limits?


...
if (!empty($_GET["limits"]
sabotage:
+1. Или лимитами, скрипт пишется за минуту.

Можно примерчик такого скрипта?

Форум сео (http://forum-seo.net) для новичков автоматическая регистрация в 30000 каталогах за 5$ (/ru/forum/157861) Нужна доработка 2 досок объявлений - avtopmr.net, pmrdom.com (вип объявления и удаление дублей)
sabotage
На сайте с 14.02.2007
Offline
192
#12


$limit = 500; // кол-во замен за итерацию
$start = (is_file('last.txt')) ? trim(file_get_contents('last.txt')) : 0;

$n = mysql_fetch_array(mysql_query("SELECT count(id) as cnt FROM {$table}"));
if ($n['cnt'] < $start) mail('box@mail.ru', 'Готово', 'работа закончена');


$q = mysql_query("SELECT id, txt FROM {$table} LIMIT {$start}, {$limit}");
while ($p = mysql_fetch_array($q)) {
$txt = YouFunc($p['txt']);
mysql_query("UPDATE {$table} SET txt='{$txt}' WHERE id='{$p['id']}'");
}

$last = $start + $limit;
file_put_contents('last.txt', $last);

И вешаешь на крон. Код не проверял, но должен работать.

ps парсер форума квадратные скобки коцает.

R
На сайте с 03.07.2006
Offline
223
#13

cron было бы правильней использовать. Но вот вариант с META refresh


$num_queue_put = 100;

if (isset($_GET[num])){
$limit = $_GET[num];
}
else {$limit = 0;}

mysql_query("UPDATE post SET pagetext = REPLACE(pagetext,'мусор','') where 1 limit $limit, $num_queue_put");

$total_rows = mysql_num_rows(mysql_query("select id from post"));

$continue = $_GET[num] + $num_queue_put;

if ($continue<$total_rows){
echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1;URL=/script.php?num=$continue\">";
echo "Обработка продолжается, обработано $_GET[num] из $total_rows строк";
}
else{
echo "Обработка завершена, обработано $total_rows строк";
}

Мне кажется вы подставляете костыли. Почему нельзя обрабатывать тексты на входе ещё в PHP?

В запросе можно также использовать WHERE pagetext LIKE "%мусор%" чтобы выбирать только нужные записи, иначе скрипт будет проходить по каждой строке таблицы.

N
На сайте с 06.05.2007
Offline
419
#14
SEO-MAN:
Можно примерчик такого скрипта?

ты же не программист, какой смысл?

качай базу на свой комп.

Кнопка вызова админа ()
LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#15
, т.к. лимит для скрипта 30 секунд.

И ч0? Увеличить не судьба? :)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
U
На сайте с 21.08.2010
Offline
40
#16

500 Мб вроде и не запредельная база +1 за вариант обработать у себя на компе.

Например, через виртуальную машину на домашнем компе с полным дублем хостинга. Привык сам к такой схемке - удобно эксперименты ставить (в т.ч. лимиты на скрипты безбоязно менять :) ) и ресурсов поболее т.е. скорострельность на порядок выше.

SEO-MAN
На сайте с 25.06.2007
Offline
187
#17
LEOnidUKG:
И ч0? Увеличить не судьба? :)

А разве юзер обычного хостинга имеет такие права по насторойке апача?

LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#18
SEO-MAN:
А разве юзер обычного хостинга имеет такие права по насторойке апача?

а вы пробовали? я не знаю что у вас за хостинг.

[umka]
На сайте с 25.05.2008
Offline
456
#19
LEOnidUKG:
а вы пробовали? я не знаю что у вас за хостинг.

Обычно ни где не разрешают время увеличивать.

Иначе будут устраивать безобразие :)

Лог в помощь!
LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#20
'[umka:
;10039421']Обычно ни где не разрешают время увеличивать.
Иначе будут устраивать безобразие :)

Значит запускать по крону скрипт и всё.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий