| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Глобальный апдейт MySQL-базы в 5 Мб |
| Автор: Wolf1994 25.7.2006, 18:31 | ||
| Пожалуйста, помогите найти оптимальное решение. Есть MySQL-база, 3 тысячи полей. Требуется в каждом поле проапдейтить ячейку "dir". Сейчас эта ячейка содержит: "rus/dir1/dir2...". Надо заменить "rus" на "all", сохранив остальную часть записи. То есть, чтобы, например, вместо "rus/dir1/dir2" было "all/dir1/dir2". У меня получилось так:
Скрипт апдейтит по 10 записей и снова вызывает себя. Можно ли подобную операцию совершить проще и быстрее |
| Автор: -=Ustas=- 25.7.2006, 21:24 |
Зачем такие заморочки с вызовом себя самого? Я бы просто написал его в консольном варианте и без разбиения. Он бы это выполнил быстрее. |
| Автор: Wolf1994 25.7.2006, 22:54 |
| В смысле - в консольном варианте? Без разбиения у меня не получилось - превышается "maximum execution time limit" в 30 секунд. У себя на компьютере я его могу обойти, но не на сервере сайта. |
| Автор: -=Ustas=- 26.7.2006, 08:49 | ||
Делаешь на каждой итерации
и все! |
| Автор: SamDark 26.7.2006, 08:58 |
| UPDATE table SET dir=replace(dir, 'rus/', 'all/') |
| Автор: -=Ustas=- 26.7.2006, 09:22 |
Если объемы работы большие, то может сам апач вывалиться, поэтому лучше для таких работ из под консоли делать. Добавлено @ 09:26 Тоже как вариант... |
| Автор: Wolf1994 26.7.2006, 15:37 | ||||||
SamDark, спасибо! Это именно то, что нужно! С меня "+".
То есть я своим скриптом могу установить максимальное время его выполнения?!. ...Ага, посмотрел:
Мне это не подходит
Имеется ввиду, как админ хостинга? Или рядовой пользователь? |
| Автор: -=Ustas=- 26.7.2006, 15:57 |
Ну это конечно если есть права на выполнение из-под шела |