MySQLからデータを取得し、while内でループしながら処理をしています。
↓↓イメージ
while( $row = mysql_fetch_array( $result, MYSQL_BOTH ) )
{
$data = $syori->excute($row["data"]);
mysql_query("insert into hoge ".$data);
}
//1処理とデータinsertに1秒かかる。
//100回の処理では100秒かかる。
この方法ですと、ひとつひとつ順番待ちの様に処理を行う為、処理が完了するまでに時間がかかってしまいます。
マルチスレッドを用いて一度に複数の処理を走らせたいのですが、どの様に記述すればよいのでしょうか?
詳細:
http://qiita.com/rana_kualu/items/02f380f2f3d5020051bb
マルチスレッドとか難しいこと考えずに、SQL呼び出すのに時間がかかるのだから、DBから、テーブルまるごと取り出せば良いのでは。
http://d.web5.jp/sql/ の mysql_fetch より抜粋。
//db接続 $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); //データベースを選択 $selectdb = mysql_select_db($dbname, $con); //指定テーブルから全レコードを読み込むSQL文 $sql = "select * from $tblname where id like \"4\""; //データセット取得 $rst = mysql_query($sql, $con);
ではinsertをループ外に出して一括コミットをする事をおすすめします。
2015/05/14 22:22:24システム全体でDBをどういう形で使っているか分からないので、それがシステムに適しているかどうかは分かりませんけれども…。