【问题标题】:PHP requests processing in serial not parallelPHP请求串行处理而不是并行处理
【发布时间】:2012-12-18 04:11:53
【问题描述】:

我写了一个页面 (cron.php),它使用 imap 库连接到邮箱,解析消息,并将它们存储在数据库中,然后echos 将结果保存在 json 中。我有几十个邮箱需要运行相同的进程,所以我整理了一个页面 (mailboxes.php),列出了所有这些帐户,每个帐户都有一个按钮,单击该按钮时,基本上通过 AJAX 和 cron.php处理完成时解析 json 响应以更新页面。

但是我注意到,如果我单击每个框,它们会返回,好像是串行运行,而不是并行运行。是否有可以解释这一点的配置选项?

【问题讨论】:

  • 您正在通过 ajax 使用并行编程。那是错误的。 stackoverflow.com/questions/985431/…openajax.org/runtime/wiki/The_Two_HTTP_Connection_Limit_Issue。由于浏览器的限制,您只能可靠地希望在任何时候运行 2 个 ajax 请求。
  • 谢谢。这似乎也是问题的一部分。当我关闭会话时,它们会更快地返回,但似乎也是成对出现的。如果我通过命令行调用 php 文件(例如php cron.php),这个连接限制是否仍然是一个问题?
  • 不,您可以通过命令行启动任意数量的进程。

标签: php imaplib


【解决方案1】:

是的,您需要在 cron.php 文件中使用 session_write_close()session_write_close

【讨论】:

  • 谢谢,我没有意识到会话会锁定。
【解决方案2】:

您正在使用会话吗?每次为给定会话运行 session_start 时,它都会被锁定,直到脚本完成或会话被“分离”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 2016-07-25
    • 2017-01-27
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    相关资源
    最近更新 更多