Я работаю над переносом данных старой БД на новую вкладку в laravel и использую чанк для преодоления утечки памяти. но когда я передаю внешнюю переменную в chuck Closure с помощью использования ($ var) ее обновления, и я отображаю ее после фрагмента complete.but, когда я сбрасываю эту переменную или обнуляю ту переменную, которую она не может обновить. Это отображение предыдущего значения.
Чтобы сбросить передаваемую ссылочную переменную, которую я использовал ниже, думает:
unset($output);
$output = null;
$output = array();
Выше кода не сбрасывается вывод $
$output = array(
"exceptional_queries" => array(),
"total_row" => 0,
"inserted_row" => 0
);
// Table 1
$f_package = $con->table('old_table')->orderBy('id');
$f_package->chunk(50, function ($package) use (&$output) {
$total_data = count($package);
$output['total_row'] += $total_data;
foreach ($package as $data) {
try {
$insert = [
......
];
//Insert Data
$result = DB::table('new_table')->insert($insert);
if ($result) {
$output['inserted_row']++;
}
} catch (\Exception $exception) {
// Catch query exception & store it in array
if ($exception instanceof Illuminate\Database\QueryException) {
$output['exceptional_queries'][] = $exception->getMessage();
}
}
}
});
echo "-> $table: ".$output['inserted_row']." row inserted out of ".$output['total_row']." \n";
if (count($output['exceptional_queries'])) {
echo "- ".count($output['exceptional_queries'])." row has QueryException! \n";
}
unset($output);
$output = null;
$output = array(
"exceptional_queries" => array(),
"total_row" => 0,
"inserted_row" => 0
);
//Table 2
Repeat above things............
В Таблице-2 указано исключение для Таблицы-1 и Таблицы-2. По сути, $ output не сбрасывается и не сбрасывается. так и происходит.
Как я могу сбросить его?
Спасибо.