免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: gudai
打印 上一主题 下一主题

关于perl上传的友情提醒【附上测试代码】 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2007-06-15 09:45 |只看该作者

  1. sub process_upload()
  2. {
  3.         my $query = CGI->new();
  4.         my $upload_filehandle        = $query->upload('uploadname');
  5.                 undef $upload_filehandle;
  6.                 undef $query;
  7.                 fatal_error(  "上传完毕" );
  8. }
复制代码


没有看到你写入文件
还要加入

  1. if (open (WFD,">/tmp/upload.file")) {
  2.     binmode (WFD);
  3.     while (<$upload_filehandle >) { print WFD; }
  4.     close (WFD);
  5.      fatal_error(  "上传完毕" );
  6. }
  7. else {
  8.     fatal_error(  "写入文件失败" );
  9. }
复制代码

[ 本帖最后由 coolend 于 2007-6-15 09:46 编辑 ]

论坛徽章:
0
22 [报告]
发表于 2007-06-15 21:53 |只看该作者
原帖由 福瑞哈哥 于 2007-6-14 13:47 发表
期待高手解答,搞不懂mod_perl。
不過可以肯定的是,在standalone Perl中,一個對象引用計數為0時,這個對象將立即銷毀。
如果這確定是CGI.pm或者mod_perl的問題,一個解決方案是把這個upload單獨設為cgi程序運 ...


对象销毁并不是说内存一定要释放吧,可能是perl内部cache起来了,并没有还给OS。所以free看起来内存是少了。下次建新对象的时候,就不用从系统直接分配内存了。

论坛徽章:
0
23 [报告]
发表于 2007-06-16 21:42 |只看该作者
感谢楼上各位的帮忙

To: coolend , 上传代码中本来是有写文件的,我贴的测试代码是我精简测试以找出问题代码的最终代码。
有点绕口,呵呵,就是本来代码是完整的,我去掉一段调试一段,留下问题的代码是去无可去了。然而问题依然存在。

我怀疑是mod_perl 的cache问题。

To: 福瑞哈哥
感谢指教,预计修改步骤将是先用cgi方式执行,若还是不行,则改为php的。这个问题真是让人迷惑,期待知道的达人解答。

论坛徽章:
0
24 [报告]
发表于 2007-06-19 10:30 |只看该作者
一贴不要多发,这里回复你了。

http://perlchina.sun126.com/cgi- ... 4095452&page=40

论坛徽章:
0
25 [报告]
发表于 2007-06-19 11:11 |只看该作者
好久未接触CGI了,

新版的CGI.pm加入了 upload_hook 支持,
也就是说支持用一个callback来处理上传的数据, 可以逐块读入数据并写入磁盘,
默认是一次性读入所有数据, 你上传个几百M的东西, 内存当然要吃完。


建议多看POD .....


.

[ 本帖最后由 Rob 于 2007-6-19 11:13 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP