У меня есть проблема, которая не обязательно входит в сферу большинства задаваемых здесь вопросов.Увеличение производительности оператора exec()
У меня есть приложение, которое я разрабатываю, который проверяет домен для определенных записей A, а также проверяет порты на разрешающем сервере, чтобы проверить, открыты ли они и как слушать.
Я добавил функциональность на свою локальную копию сайта, но для меня слишком медленно публиковать, думать об этом, так же как и текущий опубликованный сайт.
Вы можете увидеть приложение по ссылке: http://www.domainion.co.za
Введите доменное имя (без WWW), и он будет проверять наличие определенных записей.
Это приложение Symfony, я получаю эти записи, запустив несколько операторов exec() с помощью digs для конкретной информации. Причина, по которой мне нравится использовать exec, заключается в том, что если есть несколько возвращенных записей, как и в приведенной ниже команде, она позволяет присваивать каждому результату индекс массива.
рыть -x 154.0.174.35 + короткий @ 8.8.8.8
motairgdiool.hosted.co.za. (индекс 0)
kent.aserv.co.za. (индекс 1)
Теперь это занимает слишком много времени (в среднем 8 секунд для загрузки). Моя проблема с этим заключается в том, что если вам нужно было взять все эти команды в этом приложении и запустить его в сценарии оболочки, то они занять до секунды, я подозреваю, что причина, по которой моя занимает так много времени, заключается в том, что PHP открывает и закрывает для каждой из этих команд.
В попытке запустить эти запросы быстрее, я попытался ниже:
shell_exec() - Это занимает примерно в то же время, и возвращает все результаты в виде строки, я не могу использовать это ,
proc_open - занимает больше времени, также возвращает длинную строку.
процесс Symfony() компонент - принимает waaay больше, а также возвращает все результаты в виде одной строки
dns_check_record() - Вы не можете проверить наличие конкретных поддоменов записей
TLDR: Есть любым способом я могу получить записи, которые я хочу (n .domain.tld) и все еще приложить приложение быстро?
Благодаря
Открытие и закрытие виртуальной оболочки (т.е. PTy), как правило, занимает менее 0,1 секунды (вы можете время с помощью 'time script -c true/dev/null', я получаю 0,05 с). Проблема заключается в чем-то другом, например, медленном DNS или дросселировании. –
Есть ли способ конвертировать ваш комментарий в ответ?Так что я могу увеличить его тысячу раз ??? Я предположил, что использование серверов имен Google будет лучшим вариантом, поскольку я доверяю Google больше, чем IDC, на котором размещен сервер. Но да, удаление @ 8.8.8.8 почти утроило скорость, и я разделил страницу статистики с обычной страницы DNS, чтобы сделать ее еще быстрее. Спасибо за помощь! –
Похоже, что вы сделали всю работу, так что вы можете отправить это как ответ, если хотите. Подумайте о безукоризненной версии Эрика, но она должна сэкономить еще одну долю секунды, будучи более надежной –