PHP通过动态数组循环
我有一个带有php后端的Web应用程序。 在一定的时间间隔内,需要对所有用户运行检查。运行这些检查需要一些时间,更重要的是:它们不应该在不存在的用户上执行。用户从数据库接收,可以通过运行检查中途更改。我目前的解决办法是:PHP通过动态数组循环,php,arrays,database,loops,Php,Arrays,Database,Loops,我有一个带有php后端的Web应用程序。 在一定的时间间隔内,需要对所有用户运行检查。运行这些检查需要一些时间,更重要的是:它们不应该在不存在的用户上执行。用户从数据库接收,可以通过运行检查中途更改。我目前的解决办法是: 如果要检查每个用户是否仍在数据库中,则需要从数据库中查询他的信息,因此这比检查数组中的每个项(如果不是更多的资源开销)更费劲 但是我会建议把用户分成更小的部分,而不是所有的用户。并逐段核对 >首先,您可能需要考虑修改整个业务逻辑。 不要使用无限循环(while(true))和全
如果要检查每个用户是否仍在数据库中,则需要从数据库中查询他的信息,因此这比检查数组中的每个项(如果不是更多的资源开销)更费劲
但是我会建议把用户分成更小的部分,而不是所有的用户。并逐段核对 >首先,您可能需要考虑修改整个业务逻辑。
不要使用无限循环(while(true)
)和全局变量(全局$users
)
要遍历所有用户,可以逐个使用和检索现有用户。因此,在每次迭代期间,您将只从数据库中获取下一个用户:
function getUsersFromDatabase($db)
{
$id = 0;
while (($user = $db->query("SELECT * FROM `users` WHERE `id` > $id LIMIT 1"))) {
yield $user;
$id = $user->id;
}
}
foreach (getUsersFromDatabase($db) as $user) {
checkUser($user);
}
我不知道您的框架或DB适配器的详细信息,因此代码片段是通用的,应该被视为伪代码。为什么而(true)
?@sougatabase该代码是一个粗糙的示例。我只是在测试一些需要重复做的事情。最终,这将被设置为一个执事。@sevacietl我不需要重新考虑我的整个业务逻辑。这个脚本只是我测试了一下。我不明白为什么我不应该使用全局变量。在这个应用程序中,它们对我非常有用。话虽如此,我确实认为你的答案是解决这个问题的方法。我最好一个接一个地遍历数据库,让每个用户都在其中。这样,我甚至不必将所有用户都存储在内存中。问题仍然是,有没有一种方法可以在php中循环使用动态数组?