mysql 插入不执行

y愤怒的小麻雀y 发布于 2019/08/02 10:16
阅读 276
收藏 1

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

我用php 写了两个地址(方法/tp5的action),用两个浏览器窗口分别访问。这两个方法做的内容,都是从一个表中查数据,在用php重新整理,然后向另外一个表中插入(insert)。这两个地址查询的表是同一个表,但插入时,放别插入不同的表,数据量很大。出现的问题是,我第一个访问的地址中的数据是正常插入的,但第二个访问的地址一直没动,用show full processlist查看,只看到了第一个地址中运行的insert。哪位知道是为什么?我第二个运行的程序是不是已经在后台了,只是状态为“等待”?是mysql只能一次处理一个php发送的请求吗?两个访问不是同时用MySQL吗?

加载中
0
chro008
chro008

“分别插入不同的表”,看看是否是表的原因

mysql 没有插入第二个请求的数据。也没有在跑的process。建议在插入前后的逻辑打日志和报错。

另外mysql 可以批处理请求

0
ArchitectureMaster
ArchitectureMaster

楼主的需求必须开一个工作线程来现实,如果放在ui线程即你请注的action处理数据量大了会超时导致客户端返回超时。

需要楼主安装一个php扩展pthreadVC2。下载php_pthreads.dll后放到ph的ext目录中,然后修改Php.ini文件添加一条extension=php_pthreads.dll,重启apache.

确保apache能正确加载pthread之后,然后引用这个dll,并继承Thread 类,实现run方法,将你要写入数据库的代码写在里面然后在action调用这样你的action里面就不会因为大量插入数据操作导致主线程处于阻塞状态而超时了。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部