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 个为一组进行批处理,运行 五分钟,每十分钟调用一次,并在每次发送后暂停几秒钟——但这些只是示例。如果您不介意发送更慢(例如隔夜),那么您可以更改这些数字以适应。发送速度越慢通常越可靠,所以如果可以就这样做。
我正在开发群发邮件系统。我们一次发送 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 个为一组进行批处理,运行 五分钟,每十分钟调用一次,并在每次发送后暂停几秒钟——但这些只是示例。如果您不介意发送更慢(例如隔夜),那么您可以更改这些数字以适应。发送速度越慢通常越可靠,所以如果可以就这样做。