【问题标题】:PHP/MySQL: What would cause a white page even though display PHP errors are turned on?PHP/MySQL:即使打开了显示 PHP 错误,什么会导致白页?
【发布时间】:2014-09-21 15:02:47
【问题描述】:

请原谅我在这个问题上缺乏细节,因为我仍在努力弄清楚发生了什么。

我知道对此可能没有直接的答案,但我能获得的任何帮助都将帮助我进一步调试问题。

我的问题是我的 PHP 脚本会突然退出并显示一个白页。页面上没有 PHP 或 MySQL 错误,错误日志中也没有。

问题发生在非常随机的时间。当它确实发生时,它“似乎”是在一次运行大量 MySQL 查询时。当我说大时,发送电子邮件时可能是几百。如果发生大量导入,有时会出现数千个。

上一次出现此问题是在昨晚,当用户尝试发送 118 条 SMS 消息时。在每条 SMS 排队并存储在存档中后,大约会有几百个查询。

我今天尝试在两个不同的场合发送 125 条和 250 条 SMS 消息时尝试重现该问题。两者都工作得很好。然后我尝试发送 250 条 SMS 消息和 250 封电子邮件,效果也很好。

我将 Amazon Elastic Beanstalk 用于我的 PHP 页面和 RDS 用于我的 MySQL 数据库。

这听起来像是 PHP 或 MySQL 问题吗?如果两者都没有在错误日志中给我任何东西,你对我可以做些什么来进一步调试有什么建议吗?我应该打开其他一些隐藏的日志或日志记录吗?

或者是否有任何我应该查看的 MySQL 或 PHP 设置来尝试解决这个问题?

【问题讨论】:

  • 可能性列表接近无限
  • 你不检查错误日志吗?
  • ini_set('display_errors', 'On'); ob_start("ob_gzhandler");错误报告(E_ALL); ini_set('max_execution_time', 60); //300 秒 = 5 分钟 尝试在 php 文件中添加可能会显示存在什么样的错误

标签: php mysql amazon-elastic-beanstalk rds


【解决方案1】:

配置方面:

首先,查看服务器的错误日志(它与 PHP 错误日志不同)。比如apache有自己的日志文件,涉及到不同模块的启动/服务器消息等。PHP的错误日志是一个单独的日志,所以如果没有消息,那说明什么。

其次,查看 php.ini 并查看您的日志设置 - 写入的错误级别。

程序方面:

首先,拆分您的代码,使其每次运行最多处理 50 条记录。重做您的脚本,使其运行并重新运行,直到执行所有必要的操作。

其次,查看时间/内存限制 - 它们是否足以执行您的操作?比如说,发送邮件需要 1 秒,如果您的时间限制是 30 秒 - 您最多只能发送 30 封电子邮件。它与第一部分有关,因为您希望将任务划分为可以在提供的限制内安全执行的段。

【讨论】:

    【解决方案2】:

    如果这对任何人都有帮助,那么问题最终出在我的 DNS 提供商(Route S3)上。尽管我增加了我的 PHP 时间限制 (max_execution_time),但我的 DNS 提供商有 60 秒的时间限制。因此,只要 60 秒过去,它就会杀死它。这就是为什么我没有收到任何错误。

    我已经提高了这个限制,但也会重新查看我的代码:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-14
      • 2023-04-10
      相关资源
      最近更新 更多