私は、MySQLデータベースからPHPファイルを作成しています。各ファイルは225kbです。私は40のファイルを作成します。MySQL、LIMIT 0,1800〜LIMIT 72000,18000をループ(40回)で使用してフラットファイルを作成するには、より多くのDBのfirendly方法が必要ですか?
基本的には、最初にLIMIT 0、1800を持つクエリを呼び出すPHPスクリプトを実行しています。ループして40回実行し、最後のクエリはLIMIT 72000,1800を使用します。
ループでは、私は0.7秒間スリープします。プロセス全体には45秒かかります。
私が製作した一部のデバッグ情報
Query took 0.03 second for ../sitemap-0.xml done!
Query took 0.06 second for ../sitemap-1800.xml done!
..snip ..
Query took 0.9 second for ../sitemap-70200.xml done!
Query took 0.9 second for ../sitemap-72000.xml done!
Took: 44.7057
あなたは、クエリに時間がかかると長いジョブを実行するように、これはクエリはLIMITの位置を決定するために見てする必要のあるデータの量でなければなりませんがわかります。その結果、CPU使用率はクエリごとに増加します。
サーバーの最大CPU時間制限は60秒です。
私の主な考慮事項は、CPU時間とデータベースのクエリ時間をできるだけ短く保つことです。高い価値を持つことは容認できません。
クエリを何度も実行すると、リソースが少し浪費されているようです。
これを行うより良い方法はありますか?
、なぜあなたは、サイクルごとに1800に制限されています? –
このタスクを実行する頻度はどのくらいですか? – webbiedave
1800というのは、ファイルサイズとファイルの量に見合ったものだったからです。私は仕事を1日に1回実行することを考えています。 – Jules