【问题标题】:Slow response to database write from phpphp 对数据库写入的响应缓慢
【发布时间】:2009-08-22 14:10:32
【问题描述】:

我的 PHP 脚本在 WAMP 服务器上运行。 这就是我正在做的事情

  1. 查询数据库并获取一组行的 PHP 脚本 A(我设置了 set_time_limit (0) // 脚本执行的时间不受限制)
  2. 根据结果集,我为结果集的每一行执行一个 tcl 脚本
  3. TCL 脚本执行大约需要一分钟,它还会将一些数据插入到同一个数据库中
  4. 现在在执行 TCL 脚本的同时,如果我执行另一个写入数据库的 PHP 脚本,由于响应时间太慢,我无法执行此操作。它实际上等待 PHP 脚本 A/TCL 脚本完成
  5. 不过,在这段时间内,从数据库中读取数据既快又好

有人有什么建议吗?

问候, 米通

【问题讨论】:

  • 您为这些表使用什么引擎?有问题的脚本是否适用于事务?
  • 如果您使用 myisam 表,mysql 会在写入表时锁定整个表。您可能正在执行一些长时间运行的更新或插入语句,或者在代码中明确锁定表。或者你正在使用 innodb 并且有长时间运行的事务
  • @nos,你应该把它作为答案,这很可能是原因。
  • 我正在使用 MyIsam 引擎。我认为问题在于 TCL 需要时间来执行。即使我不从 TCL 写入数据库。 PHP 脚本在写入数据库之前等待 TCL 完成。请注意,我使用 PHP 的 exec() 来调用 TCL 脚本。这是从数据库中检索的行循环。即 iam 调用 TCL 脚本大约 7 次(对于 7 行 - 只是一个例子)。
  • 如果你使用 exec,当然 php 会等到它完成,这就是 exec 所做的。

标签: php mysql tcl wamp


【解决方案1】:

并发脚本不能共享会话。任何尝试session_start() 的新请求都将在此时挂起,等待上一个脚本结束。

由于脚本的结束时间不确定,最好在从 $_SESSION 超全局获取所需的所有信息后立即发送给@987654321@(),这样并发请求就不会再挂起。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多