2012-04-24 69 views
0

我有一个成员ID列表,我需要循环并针对每个ID执行一些处理。从列表或记录集一次处理5个项目

我目前循环每个ID,并针对每个ID的cfthread中的每个ID做一些处理。我遇到的问题是它创建了太多的线程,所以我想我可以在每个线程中处理大约5个项目。但我正在努力工作这一个。

我正在寻找类似于RoR的in_groups_of方法的内容。因此,我想将列表中的100个列表项目分成20个列表中的5个小列表,并将每个小列表传递给cfthread,而不是一次一个项目。

我相信这很容易做到,但我不知道该怎么做。

感谢

回答

2

如何打开列表到一个数组:

显然这是非常裸露的骨头,但它可以提供一个开始:

<cfscript> 
    myArr = listToArray(myList); 

    for(i=1;i<arrayLen(myArr);i+5){ 

     //need to do some checking to confirm that myArr[i+1] etc exist 
     processFive(myArr[i],myArr[i+1],myArr[i+2],myArr[i+3],myArr[i+4],myArr[i+5]); 
    } 
    function processFive(id1, id2, id3, id4, id5){ 
     //spin up thread and do processing... 

    } 

</cfscript> 
+2

BennyB,使用数组无疑是个诀窍。我开始与您的方法一起arraySlice udf(http://www.cflib.org/udf/arraySlice)..谢谢! – Jason 2012-04-24 09:00:16

0

诅咒我不能发表评论!我喜欢BennyB的回答,但你仍然可以有很多线索。如果你启动了一些线程,并且线程每次从阵列中取下5个项目呢?