そのため、1 つの行 (assigned_user_id) を新しい ID に更新する「メモ」フィールドがあります。注記は約です。長さ160k。users テーブルは約 300 です。
メモの行ごとに、assigned_user_id をユーザー テーブルと比較し、一致が見つかった場合は、新しいユーザー ID を取得してメモ テーブルを更新します。すすぎの繰り返し:
//dis-allow timeout. Was timing out consistently under 100 rows changes.
set_time_limit(0);
ignore_user_abort(1);
//foreach note
$counter = 0;
foreach ( $msCRMAnnotations as $key=>$value)
{
//foreach user, check for match between assigned_user_id and id_mscrm
foreach( $sugarCRMUsers as $key2=>$value2 )
{
if($value['assigned_user_id'] == $value2['id_mscrm'] )
{
//give some output as to what is changing...
echo("Note #" . $counter++ . " - Note id " . $value['id'] . " is assigned to user " . $value2['user_name'] . ".<br />" );
$query = "
UPDATE `notes`
SET `assigned_user_id` = '" . $value2['id'] . "'
WHERE `id` = '" . $value['id'] . "' AND
`assigned_user_id` = '" . $value['assigned_user_id'] . "'
";
$DB->query($query);
//unset($query);
}
}
}
具体的には、選択したデータを MsCRM から SugarCRM に移行しています。これは、プロジェクトのアカウント/メモ/ユーザー フェーズです。
では、問題は....どうすれば上記のコードをリファクタリングしてパフォーマンスを向上させることができるでしょうか? どんな助けでも大歓迎です。