我有一张约450,000排的桌子。该表需要更新一些派生字段。
我的循环是:
$sql = "SELECT * FROM table_name";
if (!($r = @ mysql_query($sql, $db_connection))) die("Mysql query $sql . Error " . mysql_errno() . " : " . mysql_error());
while ($row = mysql_fetch_assoc($r))
{
// do a number of calculations, which create some $sql to update the record
$sql .= " WHERE p_id = $id"; // $id is the records id
if (!($result = @ mysql_query($sql, $db_connection))) die("Mysql query $sql . Error " . mysql_errno() . " : " . mysql_error());
}
此代码未通过所有记录。从网页中调用php脚本,网页不响应。当我查看表格时,它已经更新了大约60,000个,其余的记录都没有得到解决。
这曾经工作得很好,但是因为我将Ubuntu升级到最新版本,所以这种情况正在发生。我尝试在php.ini中增加内存但是没有用。
想点什么?
答案 0 :(得分:1)
您可能需要使用set_time_limit($seconds);
或php.ini中的max_execution_time
参数
答案 1 :(得分:1)
你可能会达到PHP最大执行时间。要查看是否是这种情况,请查看Web服务器日志文件。最后寻找这样的东西:
PHP Fatal error: Maximum execution time of 30 seconds exceeded in ...
如果是这样,你可以编辑你的php.ini以延长超时时间:
max_execution_time = 9999
如果不是这样,服务器日志仍然可以告诉你脚本停止的原因。
答案 2 :(得分:0)
您还应该增加php.ini中的执行时间限制。问题可能是您的脚本运行时间过长。