Apache / PHP начинает отказывать в SQL-запросах после 2000 года
На нашем сервере есть веб-страница, которую мы используем для запуска административных скриптов. Например, мы могли бы запустить скрипт "unenrolStudents()", который запускает 5000 команд SQL SET одну за другой и устанавливает 5000 записей учеников в базе данных SQL как необученные. Однако мы обнаруживаем, что после выполнения нескольких тысяч запросов (это не совсем согласованно) мы будем "заблокированы" нашим сервером.
СИМПТОМЫ БЛОКИРОВКИ:
- невозможно подключиться к серверу с помощью winSCP
- открытие шпатлевки с этим соединением показывает пустой экран (без логина / пароля)
- очистка куки / кэша в chrome НЕ устраняет блокировку
- другие компьютеры в офисе также заблокированы
- блокировка может быть инициирована с высокой частотой запросов (10000 за 1 секунду) или с меньшей периодичностью (10000 за 500 секунд - это все равно приведет к блокировке, даже если частота будет намного меньше)
Мы считаем, что это особенность безопасности нашего собственного Apache. Я знаю, что мы используем Suhosin, но я не настроил его, поэтому я не знаю.
Как я могу отключить этот эффект блокировки, чтобы я мог уверенно выполнять все свои запросы SQL, и они будут проходить? Кто-нибудь еще имел дело с этим и нашел обходные пути?
Спасибо DS
3 ответа
PHP скрипт имеет очень короткое время выполнения. Вы пытались расширить его??
<?php ini_set('max_execution_time', 300);
// code here
?>
Похоже, вы пытаетесь решить проблему архитектуры программного обеспечения с помощью параметра конфигурации.
Я бы предложил написать ваше программное обеспечение для повторного использования соединений, а не открывать новые для каждой операции.
Две вещи сразу приходят на ум.
- Если вы выполняете 5000 запросов, чтобы сделать то же самое для 5000 записей, вам нужно изменить это на один запрос с соответствующим предложением "где".
- Выполнение такого большого количества запросов может привести к тому, что ваш сервер достигнет ограничения памяти.