Php 在不等待的情况下将数据插入数据库

Php 在不等待的情况下将数据插入数据库,php,mysql,insert,Php,Mysql,Insert,在我的php脚本中,我使用PDO将csv数据插入数据库 $sqlsmttempl='插入到%s(%s)值(%s)' 但仅仅几千条记录就花了相当长的时间。如何防止客户端等待插入 我尝试了插入延迟的,它没有任何错误,但似乎根本没有响应 有什么提示吗?谢谢。不让客户端等待服务器完成处理的唯一方法是在发送响应后让处理在另一个进程中进行 INSERT DELAYED是一种快速而肮脏的方法。要插入的数据库行将由MySQL排队,稍后再插入。这意味着无法检测或处理值错误,因为在execute()之后,实际上没有

在我的php脚本中,我使用PDO将csv数据插入数据库

$sqlsmttempl='插入到%s(%s)值(%s)'

但仅仅几千条记录就花了相当长的时间。如何防止客户端等待插入

我尝试了插入延迟的
,它没有任何错误,但似乎根本没有响应


有什么提示吗?谢谢。

不让客户端等待服务器完成处理的唯一方法是在发送响应后让处理在另一个进程中进行

INSERT DELAYED
是一种快速而肮脏的方法。要插入的数据库行将由MySQL排队,稍后再插入。这意味着无法检测或处理值错误,因为在
execute()
之后,实际上没有插入行。在客户端等待时,仍然必须循环csv并发出查询


如果这仍然太长,您将需要构造或使用某种spool或任务队列。在这种设计中,请求被接受,然后被传递到一个长时间运行的进程,或者被放在一个目录中,web响应被立即发送。同时,服务器上运行的另一个进程会收集请求,对其进行处理,然后在某个位置(例如数据库表)记录状态。用户应该可以进入另一个页面来监视任务的状态。

您所说的“我尝试了
插入延迟的
,它没有任何错误,但似乎根本没有响应”是什么意思?您希望发生什么事情不是这样?@FrancisAvila当任何其他线程都不使用该表时,数据将被插入?我从这里读到:但您所说的“似乎根本没有响应”是什么意思
INSERT DELAYED
将始终报告成功的插入,因为它在插入之前无法知道是否有错误,现在无法插入。@FrancisAvila当我选择csv文件并单击“上载”时,它没有显示任何消息,就像刷新页面一样。我将尝试其他查询。谢谢你的回答。即使我在处理之前向客户发送了一条消息,网站也会继续加载并挂起,这样在处理完成之前他们也无法访问其他页面。那么我能为这个问题做些什么呢?你可能误解了我的答案,或者你有其他问题。您向客户端发送“我们将处理此问题”消息,然后关闭响应。Web服务器不处理该请求,另一个进程处理。