在我的php脚本中,我正在使用PDO将csv数据插入数据库。
$sqlsmttempl = 'INSERT INTO %s (%s) VALUES (%s)';
但只需几千条记录就花了很长时间。如何防止客户等待插入?
我试过INSERT DELAYED
,它没有任何错误,但似乎根本没有回复。
有什么提示吗?谢谢。
答案 0 :(得分:1)
让客户端等待服务器完成处理的唯一方法是在发送响应后在另一个进程中进行处理。
INSERT DELAYED
是一种快速而肮脏的方法。要插入的数据库行将由MySQL排队并稍后插入。这意味着无法检测或处理值错误,因为在execute()
之后实际上没有插入行。在客户端等待时,仍然必须通过csv循环并发出查询。
如果这仍然太长,您将需要构造或使用某种假脱机或任务队列。在此设计中,请求被接受,然后传递到长时间运行的进程或放在目录中,并立即发送Web响应。同时,在服务器上运行的另一个进程搜索请求,处理它们,然后在某处记录状态(例如数据库表)。应该有另一个页面,用户可以去监视他们的任务状态。