Laravel工匠命令在一段时间后停止


Laravel artisan command stops after some time

我正在使用laravel 5.1,并希望更新mysql表,其中有近20万行。它更新了近25000行,之后就不更新了。更新这个差不多需要一个半小时。

有什么建议吗?

有几件事你需要先检查一下。

  • 你在php错误日志中得到什么错误(超时错误,内存不足错误等…)
  • mysql错误日志中有哪些错误
  • 内核是否会杀死长时间运行的进程(例如在资源极度匮乏的情况下)
例如,如果脚本在同一位置停止一致地更新,则可能是该特定语句的SQL错误。因此,请确保您正在检查mysql返回给PHP的任何错误(请参阅PDO和MySQLi中处理错误的手册)。

如果您通过PHP运行200K个不同的SQL查询,每次一个,它一定会很慢,因为您将在每个查询中遇到SQL解析器,查询执行和结果获取步骤。有一些更快的替代方法,例如LOAD DATA INFILE,它绕过MySQL中的整个解析器和查询执行步骤,允许您直接从CSV写入数据库对象文件。这对于一次将大量数据加载到数据库中非常有用,非常快。

查看错误日志。我想,你说过25000个原料可以很好地更新,然后停止。它可能会导致一些,数据库行传递错误时,它更新。如果您可以逐部分检查更新表,则可以验证它。

E。g:首先更新1-2000,然后是2000-40000。当更新20000-250000范围时,只通过错误,这意味着你的程序是好的,数据库条目通过错误。但是块方向是可以的,当增加负载时。它可以帮助您测试您的程序可以处理负载。这是某种测试方法。

你的程序可能很慢,因为有大量的数据收集,这也取决于你的计算机或服务器或开发环境的性能。尝试重构或优化代码以提高性能。你也可以尝试非关系数据库(mongodb)一些时候,它可能会给你很好的时间处理大量的数据。我想这也许能帮你解决问题。