FastCGI не совместим с Carp fatalsToBrowser? - PullRequest
3 голосов
/ 21 февраля 2011

Я разрабатываю сценарий Perl, используя FastCGI (используя CGI::Fast и CGI::Carp 'fatalsToBrowser').
Когда в моем скрипте возникают ошибки компиляции, это приводит к зависанию браузера. Кажется, что fatalsToBrowserработает не так, как с обычным CGI (просто отправьте ошибки компиляции в браузер). Как я могу это исправить?

Ответы [ 2 ]

3 голосов
/ 12 апреля 2012

Я не могу предложить вам обходного пути, но только объяснение, FastCGI работает совершенно по-другому.Когда приложение CGI выполняется стандартными дескрипторами и предоставляется среда перед выполнением, в приложении FastCGI сервер (приложение) должен сначала принять соединение от клиента (обычно веб-сервера) и обменяться несколькими сообщениями / записями, прежде чем запрос будет принят и ответможно отправить.CGI :: Carp делает магию во время фазы компиляции perl и предполагает, что стандартные дескрипторы доступны, когда возникает синтаксическая ошибка (фаза компиляции), и это рано для CGI :: Fast.pm.

Я одинсопровождающих FCGI.pm (и libfcgi), поэтому я буду работать с сопровождающими CGI, чтобы решить эту проблему.

2 голосов
/ 18 апреля 2012

Я сопровождающий CGI.pm. Я бы порекомендовал избегать использования 'fatalsToBrowser' в этом случае. Некоторые фреймворки Perl над функциями, которые делают то же самое. Например, в CGI :: Application есть CGI :: Application :: Plugin :: DebugScreen . Другие структуры имеют нечто подобное.

В других случаях популярные модули 'Carp' и 'CGI :: Carp' могут конфликтовать, если оба они будут импортированы в одно и то же пространство имен, потому что они оба предоставляют функции с одинаковыми именами, такими как 'carp' и ' квакать'. Я рекомендую использовать Carp и избегать CGI :: Carp.

...