У меня есть приложение для планирования, которое позволяет пользователям создавать события массовыми, используя недельный шаблон. Это работает, проводя уроки шаблона через AJAX
в PHP file
, который принимает шаблон и реплицирует его желаемое количество раз. Количество событий, которые он должен создать за один раз, может быть от 200-800 в зависимости.Медленные запросы - GAE PHP и облачный SQL
Проблема, с которой я сталкиваюсь, заключается в том, что эти запросы занимают много времени, что приводит к зависанию веб-сайта, а иногда и к тайм-ауту в ожидании всех записей.
Упрощенный пример:
$events = array('valid array of all events and their details');
foreach($events as $event) {
$query = 'Valid SQL with individual event detaisl';
mysqli_query($connection, $query);
}
На самом деле было бы больше происходит, например, вычисление времени начала и окончания, связывая пользователей junction tables
и т.д. Это было бы запустить 200-800 раз, чтобы создать запись для каждого отдельного события, созданного шаблоном.
Как я могу ускорить это?
Любое понимание очень ценится!
UPDATE: Я уже пытался увеличить уровень экземпляра SQL. Это не влияет на количество времени, которое требуется.
Вы можете переложить эту работу на очередь задач? Нужно ли пользователю видеть результат этих операций в ответе? –
Я думаю, это может быть разгружено. Идея состоит в том, что они выбирают временной диапазон и нажимают «Экспорт». Затем он отключается и использует шаблон для создания событий в календаре и перенаправляет пользователя в календарь, чтобы они могли видеть их. – Guy
Guy, как указал Стюарт, одним из вариантов было бы делегировать записи в задачи. Когда вы используете AJAX, вы можете обновить статус асинхронно позже.Другое предложение - настроить ваш экземпляр для совместного размещения с вашим приложением в настройках вашего экземпляра Cloud Cloud. Третья задача - оптимизировать SQL-запросы, чтобы количество необходимых блокировок приближалось к минимуму. – Mario