给出以下小cgi脚本:
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo '<html>'
echo '<head>'
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'
echo '</head>'
echo '<body>'
if [ $QUERY_STRING="yes" ]; then
echo "before"
sleep 5
echo "after"
fi
echo '</body>'
echo '</html>'
如何在&#34;之前设法获得输出?首先,然后延迟5秒,然后输出&#34;&#34;在浏览器中按此顺序?
答案 0 :(得分:1)
鉴于您在评论中提供的各种信息,问题是由Apache级别的某些输出缓冲引起的。
要“流式传输”CGI输出,您绝对需要禁用mod_deflate(至少对于包含CGI的目录)。如果您使用.htaccess
作为配置,那么
Options +ExecCGI
AddHandler cgi-script .cgi .sh
SetEnv no-gzip dont-vary
<小时/> 我已将您的问题重新标记为apache,希望有人可以提供更好的信息。如果确认问题出在Apache配置上,那么你可能会更好地询问http://serverfault.com。