从后台运行操作/处理运行时间较长的方法

uqdfh47h  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(466)

我在php中有一个表单,它将一些数据保存到数据库中。但是,在成功插入之后,下面的php函数将执行,以按“可见”id列(在本例中称为correlativo)排列每个条目。

  1. function ordenar_ids()
  2. {
  3. $sql = "SELECT DISTINCT(DATE_FORMAT(fecha, '%Y')) FROM emergencias ORDER BY fecha";
  4. $results = mysql_query($sql);
  5. $anios = [];
  6. while ($row = mysql_fetch_array($results))
  7. array_push($anios, $row[0]);
  8. foreach($anios as $anio)
  9. {
  10. $sql = "SELECT id_emergencia FROM emergencias WHERE fecha LIKE '".$anio."%' ORDER BY fecha ASC;";
  11. $results = mysql_query($sql);
  12. $correlativo = 1;
  13. while ($row = mysql_fetch_array($results))
  14. {
  15. $sql = "UPDATE emergencias SET correlativo = $correlativo WHERE id_emergencia = '".$row[0]."';";
  16. mysql_query($sql);
  17. $correlativo++;
  18. }
  19. }
  20. return 1;
  21. }

初始(本地)测试是成功的,但是当我们在生产环境中测试时,我们注意到这个过程花费的时间太长(平均约15秒),这对用户体验是有害的。
用户提交表单后,是否可以在后台运行此功能?如果不可能,我们如何解决这个问题?
其他数据:
用户不需要此函数的返回值,也不需要它来执行之后发生的下列操作。

z6psavjg

z6psavjg1#

在后台很难运行mysql查询。但xou可以在后台启动一个新的php脚本:http://php.net/manual/de/function.exec.php#86329
但更好的办法是提高脚本本身的性能。我想,你可以通过使用一个“更新”来改进它。。。选择“query,like%或using mysql triggers”。

相关问题