-1

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

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

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

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

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

我今天尝试在两个不同的场合发送 125 条和 250 条 SMS 消息时尝试复制该问题。两者都工作得很好。然后我尝试发送 250 条 SMS 消息和 250 封电子邮件,并且工作正常。

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

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

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

4

2 回答 2

1

配置方面:

首先,查看服务器的错误日志(它与 PHP 错误日志不同)。例如,apache 有自己的日志文件,与不同模块/服务器消息的启动等有关。PHP 的错误日志是一个单独的日志,所以如果那里没有消息 - 没有任何意义。

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

程序方面:

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

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

于 2014-07-30T04:50:36.397 回答
0

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

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

于 2014-08-08T02:02:04.963 回答