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
?>

Похоже, вы пытаетесь решить проблему архитектуры программного обеспечения с помощью параметра конфигурации.

Я бы предложил написать ваше программное обеспечение для повторного использования соединений, а не открывать новые для каждой операции.

Две вещи сразу приходят на ум.

  1. Если вы выполняете 5000 запросов, чтобы сделать то же самое для 5000 записей, вам нужно изменить это на один запрос с соответствующим предложением "где".
  2. Выполнение такого большого количества запросов может привести к тому, что ваш сервер достигнет ограничения памяти.
Другие вопросы по тегам