Проблемы с обновлением базы данных MySQL с 20.000 записями

#php #mysql #database #facebook

#php #mysql #База данных #Facebook

Вопрос:

Я пытаюсь запустить один php-процесс, который должен прочитать около 20.000 записей, вызвать facebook API, вернуть некоторые данные и обновить базу данных.

Но после примерно 500 записей время ожидания страницы истекает и говорит:

 ""Network Error (tcp_error)
A communication error occurred: ""
The Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests. You may wish to try again at a later time.
For assistance, contact your network support team. ""
  

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

Кроме того, если я попытаюсь открыть любую страницу в том же домене, я не смогу. Страница зависает до завершения процесса.

Есть ли что-нибудь, что можно оптимизировать?

Комментарии:

1. @Silver Light, @Sourav, спасибо за предложение. Я постараюсь «спать» между вызовами. Но как насчет второй проблемы. Даже если я обновлю 100 записей, я не смогу ничего открыть в том же домене до завершения процесса? Это проблема, поскольку пользователи есть постоянно.

2. используете ли вы сеансы на основе файлов? PHP блокирует файл сеанса, пока скрипт активно его использует. Если ваш скрипт обработки не изменяет сеанс во время выполнения этого длительного пакетного задания, сделайте session_write_close() , чтобы освободить сеанс, чтобы вы могли использовать другие части сайта, которые также используют сеансы. в противном случае ваш скрипт «заблокирует вас»

Ответ №1:

Я думаю, что facebook может иметь ограничение на подключения в течение определенного периода времени. Я предлагаю вам разбить ваш скрипт на куски и обрабатывать 400 записей одновременно. Поместите sleep() между блоками или, лучше, выполните отдельные вызовы скрипта.