CGI编程中的难题!!
我在uClinux下面跑boa服务器。
CGI程序中有一些慢速调用,但boa服务器采用的是非阻塞I/O的方式,导致经常出现“无法立即返回非阻挡套接字”的错误。严重的是导致我的Web页面只显示一半,另外一半不发过来了。
请问有没有办法在“出错”的情况下仍然返回正确的页面?因为虽然出现“无法立即返回非阻挡套接字”的错误,但是程序还是正确的执行了。
问题点数:100、回复次数:5Top
1 楼x86(大雪)回复于 2005-11-24 13:43:01 得分 40
因为你的CGI在打印“无法立即返回非阻挡套接字”之后调用exit(或类似代码,比如perl的die)退出了。你把exit注释掉即可(当然你需要对已出的错误进行处理)。Top
2 楼longenic(江寒)回复于 2005-11-24 15:06:44 得分 20
用select一把, 可写的时候再写, 可读的时候再读,就不会出错了.Top
3 楼wenxin1004(木欣欣)回复于 2005-11-28 09:44:10 得分 0
我正在尝试各种方法。
boa服务器本身就是用的select。
select能够进行多路I/O处理,
而阻塞、非阻塞是针对某一个I/O的。
二楼说的我以前也想到了,现在还在调试。
“当然你需要对已出的错误进行处理”,
每种情况的出错处理可不是一下子能做好的啊。Top
4 楼wenxin1004(木欣欣)回复于 2005-11-30 10:17:26 得分 0
没有更好的建议了吗?Top
5 楼hover_online(ξ芎メ)回复于 2005-12-11 22:13:43 得分 40
我在调试cgi的时候一般都400的错误,大部分都是指针操作错误导致,一般来讲,调试的一直怀疑出错的一句的调用return 0,看那一步出的错误Top




