MSSQL PHP запрос 200 серверных баз данных

#php #sql-server

#php #sql-сервер

Вопрос:

Я использую PHP версии 5.3.22 на IIS7. У меня есть запрос, который мне нужно выполнить для 220 удаленных серверных баз данных MSSQL. Работал отлично, пока я не достиг 30-секундного ограничения времени ожидания. Я исключил серверы с самыми медленными соединениями, и это дает мне еще несколько результатов.

Я перебираю: подключаюсь к серверу, запрашиваю, повторяю результаты (от 6 до 12 записей), отключаюсь, переключаюсь на следующий сервер, повторяю.

Я скорректировал и обнаружил, что

 ini_set( "max_execution_time", 60)
  

кажется наиболее последовательным, который не выдает ошибку 500.

Что еще я могу проверить? Или я просто делаю это неправильно?

Комментарии:

1. просто: не запускайте этот скрипт под веб-сервером. Это время ожидания существует не просто так. Для такого рода задач вы должны запускать сканирование как отдельный скрипт (например system('scan.php amp;') , а затем периодически проверять ход сканирования. PHP командной строки по умолчанию не подвержен тайм-аутам.

2. В дополнение к комментариям @MarcB выше, вы также можете рассмотреть некоторый уровень распараллеливания при выполнении этой работы. Вы можете разветвлять несколько процессов и выполнять эту работу намного быстрее (очевидно, у вас будут ограничения на системные ресурсы, доступные для запуска параллельных процессов).

3. Исходя из того, что сказал @MarcB, настройте запланированную задачу, чтобы время от времени извлекать эти данные и заполнять локальную таблицу. Теперь ваши пользователи могут запрашивать данные мгновенно. Обязательно укажите Data last updated: DATETIME примечание, чтобы люди понимали, что это не данные в реальном времени