gpt4 book ai didi

php - 调试 php 中的 mysql 插入失败

转载 作者:行者123 更新时间:2023-11-29 09:14:37 24 4
gpt4 key购买 nike

我在 PHP 5.3.4 下调试失败的 mysql 5.1 插入时遇到问题。我似乎在 mysql 错误日志或 php 错误日志中看不到任何内容。

根据雅虎关于高效分页的演示,我向网站上的海报添加了订单号(订单排名,而不是订单销售额)。

我编写了一个快速测试应用程序,并要求它创建一个类别的订单号。该类别中有 32,233 行,每次运行它时都会更新 23,304 行。每一次。我增加了内存使用量,将 ini 设置放入脚本中,并从 PHP CLI 和 PHP-FPM 运行它。每次更新的行数都没有超过 23,304 行。

这是我的脚本,我在其中添加了大量超时。

include 'common.inc'; //database connection stuff
ini_set("memory_limit","300M");
ini_set("max_execution_time","3600");
ini_set('mysql.connect_timeout','3600');
ini_set('mysql.trace_mode','On');
ini_set('max_input_time','3600');
$sql1="SELECT apcatnum FROM poster_categories_inno LIMIT 1";
$result1 = mysql_query($sql1);
while ($cats = mysql_fetch_array ($result1)) {
$sql2="SELECT poster_data_inno.apnumber,poster_data_inno.aptitle FROM poster_prodcat_inno, poster_data_inno WHERE poster_prodcat_inno.apcatnum ='$cats[apcatnum]' AND poster_data_inno.apnumber = poster_prodcat_inno.apnumber ORDER BY aptitle ASC";
$result2 = mysql_query($sql2);
$ordernum=1;
while ($order = mysql_fetch_array ($result2)) {
$sql3="UPDATE poster_prodcat_inno SET catorder='$ordernum' WHERE apnumber='$order[apnumber]' AND apcatnum='$cats[apcatnum]'";
$result3 = mysql_query($sql3);
$ordernum++;
} // end of 2nd while
}

我正处于一种令人头疼的迷茫之中。刚刚对较小的类别进行了测试,17,662 行中仅更新了 13,199 行。对于这两个实验,只有 72-74% 的行得到更新。

最佳答案

我想说你的问题出在你的第二个查询上。您对此做过EXPLAIN吗?由于 ORDER BY 子句,需要进行文件排序。如果您没有适当的索引,可能会进一步减慢速度。在测试期间尝试此语法并为您的 apcatnum 变量添加一个有效的整数。

SELECT d.apnumber, d.aptitle 
FROM poster_prodcat_inno p JOIN poster_data_inno d
ON poster_data_inno.apnumber = poster_prodcat_inno.apnumber
WHERE p.apcatnum ='{$cats['apcatnum']}'
ORDER BY aptitle ASC;

其次,由于 catorder 只是 apcatnumaptitle 组合的整数版本,因此为了方便起见,它是一种非规范化。这不一定是坏事,但这确实意味着您每次添加新标题或类别时都必须更新它。也许partition可能会更好您的 poster_prodcat_inno 表由 apcatnum 构建,当您实际需要 catorder 时,只需与 poster_data_inno 进行 JOIN。

关于php - 调试 php 中的 mysql 插入失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4526817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com