PHP 和后台进程

PHP and background processes

我正在开发群发邮件系统。我们一次发送 2-4K 封电子邮件,使用 PHPexcel 库以相同数量的电子邮件导入电子邮件联系人。 昨晚当我们发送 2k 封电子邮件时,我们收到“500 内部服务器”错误。

我想我应该开发新的电子邮件处理和联系人导入流程,对吗?如果是这样,我应该怎么做?有没有其他方法可以克服这 500 个错误?

PHP脚本被浏览器调用,浏览器加载5-10分钟后出现500错误。我正在使用 PHPMailer 库发送邮件。

从 Web 浏览器调用长 运行ning PHP 脚本与在后台调用 运行ning PHP 并不完全相同。这将锁定 Apache 线程,并且可能会受到配置的任何超时 PHP 的影响。我的猜测是在发送完成之前超时。

最好在 cron 上执行此操作。以下是一些一般性建议:

  • 每十分钟,select 来自您的数据存储的下一组未发送的电子邮件地址,可能有 100 个。
  • 向每个人发送一封电子邮件,将您所做的记录到数据库
  • 停顿几秒。这很有用,因为它可以降低您的邮件被定向到垃圾邮件箱的可能性
  • 如果您的脚本 运行ning 超过五分钟,请退出(它将在下一次 cron 调用时执行下一组电子邮件地址)
  • 否则,循环回到起点

这样就靠谱多了。为了奖励积分,写一个网页来显示哪些电子邮件已发送,哪些仍在等待。此外,您可能希望使用 MailChimp 等第三方邮件系统来提高投递可靠性。确保您的所有收件人确实选择接收您的电子邮件。

我建议脚本应该以 100 个为一组进行批处理,运行 五分钟,每十分钟调用一次,并在每次发送后暂停几秒钟——但这些只是示例。如果您不介意发送更慢(例如隔夜),那么您可以更改这些数字以适应。发送速度越慢通常越可靠,所以如果可以就这样做。