Я повторно управлял бы, чтобы не сделать, используют канал, потому что foreach запрашивают быть, потерял много времени в апаче, чтобы передать по каналу к сценарию и ожидать конец сценария для освобождения апачского ресурса. Так, если по причине, Вы база данных становится очень медленной, чтобы сделать, ВСТАВЛЯЮТ, Вы могли бы иметь все апачские потоки/процесс для ожидания сценария для окончания задания и не можете использоваться для обработки нового пользовательского запроса
Посмотрите то, что Вы можете, чтобы сделать узнать, который 500 ошибок Вы получаете. Удостоверьтесь, что у Вас есть IE дружественные выключенные ошибки (если Вы используете IE), и если Вы все еще не получаете хорошую ошибку, проверьте журналы IIS для получения 500 кодов подстатуса. Это, вероятно, даст большой ключ к разгадке относительно точной ошибки и что делать с этим.