Я использую PHP (Yii Framework) и Postgresql для БД. В основном wappstack. Я только что упомянул их, если они когда-либо беспокоятся об этой проблеме.
Во всяком случае, я пытаюсь добиться этого, у меня есть действие отправки:
public function actionSubmitData($id){//Execute Sql queries here
$this->render('view',array(
//some data
));
}
Проблема в том, что я буду обработка большого количества данных; Около 50 000 записей будут обработаны в каждой из 4 таблиц по 10 столбцов в каждой таблице, что довольно много. Сценарий использования состоит в том, что пользователь отправляет, затем операторы SQL выполняются в фоновом режиме, но представление «представление» уже должно отображаться, не требуя от пользователя ожидания обработки записей. Он / она может проверить это позже после обработки записей.
Обычный запрос сначала выполнял бы операторы sql, а затем отображал представление. Проблема в том, что страница занимает 3-5 минут. Страница никогда не загружается; и создание записей не закончено, просто появляется белая страница, когда запросы интенсивны.
Другими словами, как мне выполнить sql запросы в фоновом режиме? Предоставление пользователю возможности просматривать приложение еще во время запроса в процессе? А также где-то на заднем плане, записи обрабатываются? Какой обходной путь для этой проблемы? Спасибо!
Я бы посоветовал отправить ваши запросы (задания) в какую-нибудь систему обмена сообщениями, как RabbitMQ или же Gearman. Это позволит выполнять вашу работу параллельно. Вы даже сможете легко масштабировать свою работу.
Это должно быть сделано с помощью Cron Job.
in process
и обработать это.Поскольку Cron Job работает в CLI, вы не получите тайм-аут сценария.