查询mysql并为每个成员运行脚本。 (大数据库)

时间:2011-03-15 02:59:57

标签: php mysql

所以我有一个相当大的~800,000名成员的数据库

我想对数据库运行查询并为每个成员运行脚本。

如果没有超时,我怎么能这样做?

这对我不起作用:

$query = 'SELECT * FROM members';

$result = mysql_query($query);

while ($row = mysql_fetch_assoc($result)) {

//script

}

1 个答案:

答案 0 :(得分:0)

您可以使用set_time_limit(0),这意味着正在运行的文件没有时间限制。

请参阅set_time_limit($seconds)

  

最长执行时间,以秒为单位。如果设置为零,则不会施加时间限制。

您运行的另一个风险是内存问题。您可以提高内存限制,但最好以块的形式处理数据,使用限制来防止一次加载太多数据。

以下是一个例子:

<?php
$start = 0;
$size = 100;
while(true) {
    $query = sprintf('SELECT * FROM members LIMIT %d,%d', $start, $size);

    $result = mysql_query($query);
    if (mysql_num_rows($result) == 0)
        break;

    while ($row = mysql_fetch_assoc($result)) {

    //script

    }

    mysql_free_result($result);
    $start += $size;
}