Мы экспериментировали с клиентом Delphi Indy (соединительная линия SVN) и Apache с mod_php. Вызывается PHP-скрипт, который регистрирует функцию отключения.
Во время тестирования эта функция выключения вызывается только после завершения сценария и возврата connection_status()
на ноль.
Если я использую CURL и нажимаю Ctrl-C во время выполнения скрипта, CURL отправляет пакет TCP с флагом RST, установленным в логическое значение true. Это запускает функцию отключения, и connection_status()
возвращается обратно. Если время соединения истекает, флаг TCP FIN включается, но функция выключения не запускается - фактически процесс Apache переходит в CLOSE_WAIT, пока не завершится выполнение сценария PHP. Если я использую Indy, единственный установленный флаг - это FIN.
Имея все это в виду, можем ли мы заставить Indy отправлять TCP-пакет с флагом RST, установленным в true? Мы хотим сделать это, когда время соединения истекает (решение проблемы, для которой мы тестируем).
См. Также http://uk.php.net/connection_handling