1

誰かがいくつかの提案や回避策を持っていることを願っています。

私は最近、CPanelのパイプを介して転送されたメールを処理し、詳細をmySQLテーブルに入力するための電子メールパーサーを作成しました。

クライアントは現在、このデータベースへの履歴メールのインポートを望んでおり、約50のGmailアカウントを持っており、そのうちのいくつかには20,000を超えるメッセージがあります。

私が使用している「テスト」アカウントでは、25000通のうち最大約7000通のメールを受け取ることができました。なぜそれを取り除いたのかを理解するために、非常に単純なphp imapスクリプトを実行して、電子メールのいくつかの部分をテーブルのセルにダンプし、後で解析することを心配しましたが、同じことが起こります。6000〜7000の電子メールマークにぶつかって停止します。エラーなどは発生せず、停止するだけです。

Gmailには1時間あたり750MBのIMAPの帯域幅制限があることがわかりました。計算を行うと、それを達成している可能性が非常に高く、それが停止している理由です。

最初の質問-それが理由かどうかを確認する方法を知っている人はいますか?

第二に、それが誰でも最良の解決策を考えることができると仮定しますか?

私は数千通の電子メールのブロックでそれを行うことを検討しましたが、これはアカウントの数のために多くの手動介入を意味し、私が持っていないすべてをダウンロードするのに長い時間がかかります。

私が持っていた2番目の(そしてこれまでのところ最良の)アイデアは、Gmailの推奨する方法の1つを使用して、すべてのメールをクライアントのCpanelで作成されたメールアドレスに移行し、組み込みのパイプ機能を使用して、私が彼らの新着メールでやっているのと同じように。(移行によってCPanelがパイプルールを適用するようになるかどうかは100%わかりません。テストする必要があります)。

入力に感謝します。

前もって感謝します。

4

1 に答える 1

1

私はあなたの最初の質問に対する答えを持っていません。

ただし、2番目の質問に関しては、タスクを数千通の電子メールに分割した場合、必ずしも手動でプログラムを再実行する必要はありません。x個の電子メールがプルされた後、sleepを使用してプログラムを1時間停止するか、1時間に1回実行されるcronジョブを設定して、最後に処理した電子メールへのポインターを保存する必要があります。データベースまたは一時ファイル。これにより、次のcronジョブの実行をどこで取得して再開するかがわかります。

于 2012-11-13T13:41:40.110 に答える