Перенос данных MySQL, скорость и эффективность - PullRequest
0 голосов
/ 26 февраля 2011

Мне пришлось изменить план моего веб-приложения, чтобы уменьшить время загрузки (http://stackoverflow.com/questions/5096127/best-way-to-scale-data-decrease-loading-time-make-my-webhost-happy).

Это изменение плана подразумевает, что данные моего приложения должны быть перенесены в этот новый план (иначе мое приложение не будет работать)Чтобы перенести все мои записи MySQL (тысячи записей), я написал скрипт PHP / MySQL.

Открытие этого скрипта в моем браузере не работает. Я установил лимит времени скрипта на0 для неограниченного времени загрузки, но через несколько минут сценарий перестает загружаться. Cronjob также не очень вариант: 1) достаточно странно, что он не загружается, но самая большая проблема: 2) я боюсь, что это будетстоит слишком много ресурсов моего общего сервера.

Знаете ли вы быстрый и эффективный способ переноса всех моих записей MySQL с использованием этого сценария PHP / MySQL?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2011

Я решил проблему!

Да, это займет много времени, да, это приведет к увеличению нагрузки на сервер, но это просто необходимо сделать. Я использую журнал ошибок для проверки ошибок во время миграции.

Как?

1) Я добавил ignore_user_abort(true); и set_time_limit(0);, чтобы скрипты продолжали работать на сервере (останавливается, когда цикл while () завершен).

2) В цикле while () я добавил код, позволяющий остановить сценарий миграции, создав небольшой текстовый файл с именем stop.txt:

    if(file_exists(dirname(__FILE__)."/stop.txt")) {
    error_log('Migration Stopped By User ('.date("d-m-Y H:i:s",time()).')');
    break;
}

3) Ошибки миграции и дубликаты заносятся в мой журнал ошибок:

error_log('Migration Fail => UID: '.$uid.' - '.$email.' ('.date("d-m-Y H:i:s",time()).')');

4) После завершения миграции (используя mail()) я получаю электронное письмо с результатом миграции, поэтому мне не нужно проверять это вручную.

Возможно, это не лучшее решение, но с ним можно работать!

0 голосов
/ 26 февраля 2011

Вы можете попробовать PHP "ignore_user_abort". Это немного опасно, потому что вам нужен НЕКОТОРЫЙ способ завершить его выполнение, но возможно, ваш браузер прерывается после того, как сценарий занимает слишком много времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...