当调用mysqli_real_connect时,用户从PHP脚本收到截断的消息(最多19109个字符)

时间:2011-06-06 13:38:26

标签: php mysql apache2 mysqli

我的PHP脚本有一个问题,有时会返回截断的消息。

流程:

  1. 用户调用search.php
  2. 脚本处理请求:

    • a 连接到数据库
    • b 使用SimpleXML类构建XML
    • c typeCast SimpleXML为字符串。
    • d 将该字符串打印到客户端。
  3. 在某些情况下,用户只接收(输出到浏览器)部分信息
  4. 在研究了这个问题之后,这些是我发现的事实:

    1. 最大长度为19109个字符 - >更重要的是,它被截断了。
    2. 我记录了2.c typeCast XML字符串,发现该日志包含完整的XML(未截断!)。
    3. 返回更短/更长响应的其他脚本工作正常。
    4. 问题以某种方式与数据库连接有关:

      • 为了检查问题是否与SimpleXML或XML-String有关,我在#上打印(输出到浏览器) diffrent-hardcoded-XML 2.d - >它也被截断了。

      • 然后我尝试找到可能导致它的原因(虽然 diffrent-hardcoded-XML 仍在那里),所以我使用“die;”调试了脚本。然后我发现只有当mysqli_real_connect或mysql_real_connect被调用时,才会截断它的返回值。

    5. 关于如何解决/调试此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

也许message #2会给你答案?简而言之,PHP手册refuses,这种功能在PHP中几乎不存在。

如果是这种情况,您可能会看到截断输出,因为您启用了隐式刷新,因此在脚本执行期间会立即将响应刷新到浏览器。在某些时刻,脚本调用mysql_real_connect,不存在。这会导致脚本停止执行,因此您会看到部分形成的输出。如果您display_errors已禁用 - 您将看不到错误消息。

因此,尝试在PHP安装中启用错误输出(diplay_errors config指令)。解决此问题的另一个好方法是,如果mysql_real_connect

{{1}}确实存在{{1}}