From: Furutanian Date: 2010-07-02T23:13:36+09:00 Subject: [ruby-dev:41788] net/pop.rb による大量の pop はじめまして、フルタニアンと申します。 はじめてパッチを投稿します。 先日、4 万通程度のメールを pop しようとしたら、ウンともスンともい わなくなってしまい、数十分して処理を再開した頃には、pop セッショ ンが切れてました。 どうやら、uid を結びつける処理がシーケンシャルなのが災いしている ようです。ハッシュを経由させたら、数秒で終わりました。 4 万通を pop することの是非はともかく、よろしければ、ぜひ追加を お願いします。 --- pop.rb.org 2009-02-03 14:34:11.000000000 +0900 +++ pop.rb 2010-06-28 16:39:04.000000000 +0900 @@ -568,9 +568,11 @@ end def set_all_uids #:nodoc: internal use only (called from POPMail#uidl) + uids = {} command().uidl.each do |num, uid| - @mails.find {|m| m.number == num }.uid = uid + uids[num] = uid end + @mails.each {|m| m.uid = uids[m.number] } end end # class POP3 === Mitsuhiro Furuta === [EOF]