大型用户群上的GET_USERS()超时--分割查询的选项?

时间:2015-09-30 作者:Christine Cooper

我们每天运行一个cronall 用户的数据并更新其值。问题是get_users() 因为庞大的用户群而超时。是的,我可以更新php.ini 文件并增加超时限制,但这只会延迟不可避免的时间。

所以,潜在的解决方案是get_users() 分批进行。例如,在第一批中,我们得到ID为1-1000的用户。是使用include 参数并在数组中列出1-1000个ID?看起来很绝望。

对于此类场景,还有哪些其他选项?

1 个回复
最合适的回答,由SO网友:dswebsme 整理而成

您的批处理想法是正确的。在get\\u users()调用中需要一组参数。“number”和“offset”参数的组合应该可以满足您的需要。在下面的示例中,$count是对当前正在运行的批的引用。

<?php
// inside a loop where $count is the number of times the loop has run
$args = array(
    \'number\'       => 1000,
    \'offset\'       => $count * 1000,
);
get_users($args)
?>
更新:$计数将从0开始。

第一次通过循环时,您将从数据库中的第一个用户开始获得一组1000个用户,因为0*1000=0(无偏移)

第二次循环时,您将从数据库中的1001个用户开始获得另一组1000个用户,因为1*1000=1000(即跳过前1000个结果,检索下一组)

只要返回结果,循环就应该继续。