所以我有一个相当大的~800,000名成员的数据库
我想对数据库运行查询并为每个成员运行脚本。
如果没有超时,我怎么能这样做?
这对我不起作用:
$query = 'SELECT * FROM members';
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
//script
}
答案 0 :(得分:0)
您可以使用set_time_limit(0)
,这意味着正在运行的文件没有时间限制。
最长执行时间,以秒为单位。如果设置为零,则不会施加时间限制。
您运行的另一个风险是内存问题。您可以提高内存限制,但最好以块的形式处理数据,使用限制来防止一次加载太多数据。
以下是一个例子:
<?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;
}