私たちはPHP 7を使用しており、128 MBのRAMしか搭載していないWebサーバー上でMySQL DBを実行しています。 データセットの処理に問題があります。 簡単な説明:40.000個の製品があり、更新する必要があるかどうかを調べるために、これらの製品にデータを収集したいと考えています。 1000万のデータセットを持つ別のテーブルから特定のデータを収集するクエリには、いくつかのSUM関数が含まれているため、1.2秒かかります。 SUMに関連する時間範囲が異なるため、すべての製品について個別にクエリを実行する必要があります。クエリの大量のために、すべての製品を繰り返し処理する関数はタイムアウト(5分後)を返します。そのため、関数を呼び出すcronjobを実装し、最後に終了した製品。私たちは5分ごとにcronjobを呼び出します。 しかし、40,000製品では、すべての製品が処理されるまでに30時間かかります。 cronjobごとに、私たちの関数は約100個のプロダクトを処理します... このような大量のデータをどのように扱うことが可能ですか?たとえば、それを並列化する方法はありますか?誰かに別のアイデアがありますか?サーバーのアップデートは解決策ですか?処理するデータ量は、PHPとSQLの合計が1000万です。
ありがとうございます! ナディ
「サーバーの更新は解決策ですか?」明らかに、あなたがRAM(そしておそらくCPU)を使い果たしているなら、そうです。 pthreadはさらに多くのRAMとCPUを使用します。 – rndus2r