【问题标题】:Gmail to Database using PHP - hitting Gmail bandwith limit - suggestions?使用 PHP 的 Gmail 到数据库 - 达到 Gmail 带宽限制 - 建议?
【发布时间】:2012-11-13 13:07:45
【问题描述】:

希望有人有一些建议或解决方法。

我最近编写了一个电子邮件解析器,用于处理通过 CPanel 中的管道转发的邮件,并将详细信息输入到 mySQL 表中。

客户现在希望将历史邮件导入此数据库,并拥有大约 50 个 Gmail 帐户,其中一些帐户包含超过 20,000 封邮件。

在我使用的“测试”帐户上,我已经能够从 25000 封电子邮件中收到大约 7000 封电子邮件。为了尝试弄清楚为什么我将其剥离,所以运行了一个非常简单的 php imap 脚本,只是为了将电子邮件的几个部分转储到表格中的一个单元格中,然后担心解析它,但是同样的事情也会发生。它达到 6000-7000 电子邮件标记并停止 - 没有错误或任何东西,它只是停止。

我刚刚发现 Gmail 对 IMAP 的带宽限制为每小时 750MB,并且算一算,我很可能达到了这个限制,这就是它停止的原因。

第一个问题 - 任何人都知道我如何检查这是否是原因?

其次 - 假设任何人都可以想到最佳解决方案?

我考虑过以几千封电子邮件为单位进行此操作,但这意味着由于帐户数量众多,需要大量人工干预,而且我没有的所有这些都需要很长时间才能下载。

我的第二个(也是迄今为止最好的)想法是使用 Gmail 推荐的方法之一将所有邮件迁移到在客户端的 Cpanel 上创建的电子邮件地址,并使用内置管道功能通过我的以与我处理他们的新邮件相同的方式编写脚本。 (我不能 100% 确定迁移会触发 CPanel 应用管道规则,我必须进行测试)。

感谢任何意见。

提前致谢。

【问题讨论】:

    标签: php mysql gmail imap


    【解决方案1】:

    你的第一个问题我没有答案。

    但就您的第二个问题而言,如果您将任务拆分为数千封电子邮件,则不一定必须手动重新运行您的程序。您可以在收到 x 封电子邮件后使用 sleep 将程序停止一小时,或者您可以设置一个每小时运行一次的 cron 作业,您只需保存指向您处理的最后一封电子邮件的指针一个数据库或临时文件,以便您知道在下一次运行 cron 作业时从哪里开始并重新开始。

    【讨论】:

    • 只需在数据库中处理您已经发送的电子邮件,然后按照@Pitchinnate 的建议发送它们。如果您尝试发送太多太快,任何服务器都会对您生气
    • @Pitchinnate -谢谢!可能听起来很愚蠢,但我不知道 Sleep() 函数!那应该可以解决我的问题(手指交叉)
    猜你喜欢
    • 2011-04-25
    • 1970-01-01
    • 2017-06-27
    • 2020-06-09
    • 2015-08-23
    • 1970-01-01
    • 2015-11-20
    • 2013-08-24
    相关资源
    最近更新 更多