【发布时间】:2009-08-22 14:10:32
【问题描述】:
我的 PHP 脚本在 WAMP 服务器上运行。 这就是我正在做的事情
- 查询数据库并获取一组行的 PHP 脚本 A(我设置了 set_time_limit (0) // 脚本执行的时间不受限制)
- 根据结果集,我为结果集的每一行执行一个 tcl 脚本
- TCL 脚本执行大约需要一分钟,它还会将一些数据插入到同一个数据库中
- 现在在执行 TCL 脚本的同时,如果我执行另一个写入数据库的 PHP 脚本,由于响应时间太慢,我无法执行此操作。它实际上等待 PHP 脚本 A/TCL 脚本完成
- 不过,在这段时间内,从数据库中读取数据既快又好
有人有什么建议吗?
问候, 米通
【问题讨论】:
-
您为这些表使用什么引擎?有问题的脚本是否适用于事务?
-
如果您使用 myisam 表,mysql 会在写入表时锁定整个表。您可能正在执行一些长时间运行的更新或插入语句,或者在代码中明确锁定表。或者你正在使用 innodb 并且有长时间运行的事务
-
@nos,你应该把它作为答案,这很可能是原因。
-
我正在使用 MyIsam 引擎。我认为问题在于 TCL 需要时间来执行。即使我不从 TCL 写入数据库。 PHP 脚本在写入数据库之前等待 TCL 完成。请注意,我使用 PHP 的 exec() 来调用 TCL 脚本。这是从数据库中检索的行循环。即 iam 调用 TCL 脚本大约 7 次(对于 7 行 - 只是一个例子)。
-
如果你使用 exec,当然 php 会等到它完成,这就是 exec 所做的。