PHP を使用して MySQL で挿入をバッチ処理するにはどうすればよいですか?たとえば、最初の 1,000 個のデータが処理された後、次に 1,001 ~ 2,000 個のデータが処理され、さらに 2,001 ~ 3,000 個のデータが処理され、すべてが処理されるまで続きます。

WBOY
リリース: 2016-06-13 11:56:44
オリジナル
2032 人が閲覧しました

mysqlでphpを使用してバッチで挿入を処理するにはどうすればよいですか?たとえば、最初の 1,000 個のデータが処理された後、1,001 ~ 2,000 個のデータが処理され、さらに 2,001 ~ 3,000 個のデータが処理されます...すべてが処理されるまで?
テーブルメンバーのデータ量が大きくない場合は、一度に実行できます:

$q="select * from member'";<br />$r=$obj_db->simplequery($q);<br />while($a=$obj_db->fetchrow($r,DB_FETCHMODE_ASSOC)){<br />   $id=$a[id];<br />   $mccd=$a[cca]+$a[ccb];<br />   <br />   $query="insert into mingxi (mid,mccd,mtime) values ('$id','$mccd','$time')";<br />   $obj_db->simplequery($query);<br />}
ログイン後にコピー


ただし、メンバーのデータ量が 1 つになった場合エラー:
致命的なエラー: D:

で最大実行時間 30 秒を超えました。では、たとえば、最初の 1000 個のデータが処理された後、バッチ処理を実装するにはどうすればよいでしょうか。処理された後、1001 ~ 2000 個のアイテムが処理され、その後さらに 2001 ~ 3000 個のアイテムが処理されます...すべてが処理されるまで?

$q="select * from member'";<br />$r=$obj_db->simplequery($q);<br />while($a=$obj_db->fetchrow($r,DB_FETCHMODE_ASSOC)){<br />$i++;<br /><br />$ep=1000;//这里假设处理完第1个1000条后再处理第二个1000条,直至处理结束?<br /><br />   $id=$a[id];<br />   $mccd=$a[cca]+$a[ccb];<br />   <br />   $query="insert into mingxi (mid,mccd,mtime) values ('$id','$mccd','$time')";<br />   $obj_db->simplequery($query);<br />}
ログイン後にコピー



詳細なコードを書くのを手伝ってください、ありがとう!コードは隠蔽され、バックグラウンドで実行されるため、ページングを使用して各ページを手動でクリックすることは考慮しないでください
------解決策------ -----
メンバーからの mingxi (mid,mccd,mtime) select id、cca ccb、time への挿入を使用できます
-----解決策-- ------------------
$offs = isset($_GET['offs']) ? $_GET['offs'] : 1;<br />$sql = "select * from member limit $offs, 1000";<br />//做你该做的事<br />header("Location: $_SERVER[PHP_SELF]?offs=" . ($offs+1000));<br />
ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート