我在php中有一个表单,它将一些数据保存到数据库中。但是,在成功插入之后,下面的php函数将执行,以按“可见”id列(在本例中称为correlativo)排列每个条目。
function ordenar_ids()
{
$sql = "SELECT DISTINCT(DATE_FORMAT(fecha, '%Y')) FROM emergencias ORDER BY fecha";
$results = mysql_query($sql);
$anios = [];
while ($row = mysql_fetch_array($results))
array_push($anios, $row[0]);
foreach($anios as $anio)
{
$sql = "SELECT id_emergencia FROM emergencias WHERE fecha LIKE '".$anio."%' ORDER BY fecha ASC;";
$results = mysql_query($sql);
$correlativo = 1;
while ($row = mysql_fetch_array($results))
{
$sql = "UPDATE emergencias SET correlativo = $correlativo WHERE id_emergencia = '".$row[0]."';";
mysql_query($sql);
$correlativo++;
}
}
return 1;
}
初始(本地)测试是成功的,但是当我们在生产环境中测试时,我们注意到这个过程花费的时间太长(平均约15秒),这对用户体验是有害的。
用户提交表单后,是否可以在后台运行此功能?如果不可能,我们如何解决这个问题?
其他数据:
用户不需要此函数的返回值,也不需要它来执行之后发生的下列操作。
1条答案
按热度按时间z6psavjg1#
在后台很难运行mysql查询。但xou可以在后台启动一个新的php脚本:http://php.net/manual/de/function.exec.php#86329
但更好的办法是提高脚本本身的性能。我想,你可以通过使用一个“更新”来改进它。。。选择“query,like%或using mysql triggers”。