2015-05-28 5 views
0

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

Есть ли способ иметь управляемую вставку, чтобы она вставляла количество X, а затем пауза в течение нескольких секунд, а затем продолжайте движение до тех пор, пока оно не будет завершено?

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

Я не совсем уверен, что я ищу, поэтому изо всех сил пытался найти помощь в Google.

ответ

0

Я бы порекомендовал вам использовать для этого фоновые задачи. Приостановка вашего PHP-скрипта не поможет вам ускорить загрузку страницы. Apache (или nginx или любой другой веб-сервер) отправляет весь HTTP-пакет обратно в браузер только тогда, когда PHP-скрипт завершен.

Вы можете использовать некоторые функции, связанные с потоком вывода, и если веб-сервер поддерживает передачу пакетов, то вы можете видеть прогресс, пока загружается ваша страница. Но для этого многие разработчики используют AJAX-запросы. Один запрос для одного фрагмента данных. И сохраните позицию куска в сеансе.

Но, как я писал вначале, лучшим способом было бы использование фоновых задач и рабочих. Существует много способов реализации этого подхода. Вы можете использовать некоторые специализированные сервисы, такие как RabbitMQ, Gearman или что-то в этом роде. И вы можете просто написать собственное консольное приложение, которое вы начнете и проверите cron-task.

Смежные вопросы