【发布时间】:2016-09-09 22:59:58
【问题描述】:
我正在学习 PHP 和 Laravel。我工作的公司有一个纯 PHP 构建的 Web 应用程序。我注意到,在执行诸如从 CPU 和内存密集型的大型 CSV 文件执行数据库更新之类的操作时,Web 应用程序几乎无能为力。例如,用一些无关紧要的东西更新某人的帐户,而且根本不会占用 CPU 和内存。基本上做前者会使系统变砖,直到它完成。查看 Linux 服务器上的 TOP,显示 CPU 使用率接近 99%,内存使用率相当高。
无论如何,这确实不是一个类似企业的系统,只是一些用户用来管理另一个 Web 应用程序的用户,该应用程序是用客户使用的 Python 框架编写的。但这让我想到了基于 PHP 的企业系统的方法是什么?
在完成之前,显然不能让单个用户执行密集型任务来阻塞系统。我想在现实世界中有很多例子,PHP 正在处理非常复杂的内存密集型任务,而其他用户却不明显。
编辑:当我说“构建系统”时,我指的是服务器本身,因此管理员 PHP Web 应用程序和客户端 Python Web 应用程序都不会响应请求。
【问题讨论】:
-
CSV 文件大概有多大?数十兆字节..千兆字节?列的数据类型是什么?只需添加一个大数据列表,它应该很快..您是在让 SQL 执行任何逻辑还是简单的 INSERT INTO ...?我们需要查看代码才能知道为什么要花这么长时间。
-
我目前使用的是大约 17MB,但是 SQL 正在做的是检查表中是否已经存在行,如果不添加它们。我没有写它,但在我看来应该删除该表并创建一个新表。看起来他们几乎制作了所有东西
VARCHAR(32)... 大约有 956 列和 5000 行。 -
我希望它不要一一检查行。
-
是的,我真的应该看看查询。尽管如此,有没有办法在不停止运行的情况下限制它正在使用的 CPU 和内存量,从而希望允许其他用户继续他们的工作?