LINUX.ORG.RU

Apache, perl


0

0

Есть скрипт на перле:

#!/usr/bin/perl
print "Location: http://мой-сайт/мой-файл\n\n";

{
... #Другие действия
}


Так вот, почему переход на "http://мой-сайт/мой-файл" производится только после завершения всего скрипта, а до этого времени броузер ждет ответа??
Как сделать, чтобы броузер сразу перешел по адресу, а скрипт продолжил свою работу?? (Если такое возможно)


Можно попробовать сделать close STDOUT после print.

ach
()
Ответ на: комментарий от anonymous

Ээ, ну да.
Значит, если не поможет закрывание STDOUT (кстати, как это сделать? close(STDOUT)?), то выделю код в отдельный скрипт и буду запускать через nohup.

ProtecT
() автор топика

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

dip_fog
()

$| 

If set to nonzero, forces a flush right away and after every write or print on the currently selected output channel. Default is 0 (regardless of whether the channel is really buffered by the system or not; $| tells you only whether you've asked Perl explicitly to flush after each write). STDOUT will typically be line buffered if output is to the terminal and block buffered otherwise. Setting this variable is useful primarily when you are outputting to a pipe or socket, such as when you are running a Perl program under rsh and want to see the output as it's happening. This has no effect on input buffering. See getc for that. (Mnemonic: when you want your pipes to be piping hot.)

Короче если буферизация не нужна, устанавливаешь $| = 1; 
И все дела.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.