Я пытаюсь запросить базу данных MySQL на веб-странице. В моем R-скрипте у меня есть 4 различные функции «запроса», а также несколько вычислений, которые будут отображать статистические графики на моей веб-странице, все они зависят от переменной «N». Я использую PHP (используя shell_exec) для вызова R и отправки «N». Я использую RMySQL & библиотеки ggplot2 в R.
Выполнение моего R-скрипта только с одной базовой функцией запроса (включая dbConnect (), dbGetQuery и on.exit (dbDisconnect ()), затем использование png (), plot () и dev.off () занимает ~ 15 секунд для отображения График на моем сайте.
С 2 функциями и 2 графиками у меня даже не хватило терпения подождать, чтобы посмотреть, работает ли он, так как время загрузки так долго. Сами запросы довольно длинные (возможно, их можно было бы упростить с помощью циклов), но я протестировал их на работу через MySQL, и я не уверен, как избежать ошибок цикла с SQL.
Может ли длительное время загрузки быть связано с наличием dbConnect / dbDisconnect в каждой отдельной функции? Должен ли я сделать это только один раз в сценарии (то есть создать новую функцию «подключения», а затем вызвать другие функции здесь)?
Это тот факт, что я выполняю многократные и длинные запросы? Если это так, было бы лучше, если бы я разделил каждую «функцию запроса» на отдельные сценарии R, а затем «shell_exec» каждый и позволил бы пользователю выбирать, какие графы отображать (то есть флажки в HTML / PHP, которые допускают выполнение каждого скрипта / графика желательно)?
Благодаря тестированию я знаю, что у меня есть логика, но я могу что-то упустить. Я хотел бы ускорить процесс, чтобы пользователю сайта не приходилось смотреть на экран загрузки вечно, и я действительно мог бы получить некоторые ощутимые результаты.
Извините за длинную просьбу, я ценю любую помощь, которую вы можете оказать! Если вы хотите увидеть веб-страницу или любой мой код, чтобы получить лучшую идею, я могу загрузить это и поделиться.
Спасибо!
РЕДАКТИРОВАТЬ: Следует также отметить, что я использую цикл while (х < 100) для некоторых расчетов; Я знаю, что циклы в R обычно известны как дорогостоящие процессы, но все дело в векторе (я думаю, что это название?) У меня над головой.
Ваши запросы, вероятно, очень требовательны и не могут быть выполнены синхронно. Вместо этого вы можете использовать систему очередей. Когда запрос сделан, он отправляется в очередь. Результаты будут выведены асинхронно, когда сервер будет готов. В то же время вы можете перенаправить своего пользователя на другую страницу, и об использовании можно будет узнать, когда будут доступны результаты.
Вот некоторые предложения:
Других решений пока нет …