Данные теряются во время объемного добавления в RedisPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Данные теряются во время объемного добавления в Redis

Сообщение Anonymous »

1 AM Добавляя более 7 тысяч данных сзади, но по какой-то причине 1000 Данные получили это < /p>
> Это используется для возвращения
1, чтобы получить Excel
Это фиктивное текст для обойти валиадацию < /p>
lorem очень много, что в разделе разработчика, но в гости, но и в гости. Чтобы сделать странное помилование, кто работает над ноздрудом Ullamco, за исключением случаев, как улавливание удобства. Домашнее задание или невременное боли в критике удовольствие быть парой боли в футбол. Excepteur, это жалюзи, которые хотят не делать проекции, они виноваты, что услуги отказываются от души, которая является закусками. < / P>

public function uploadExcel(Request $request)
{
$request->validate([
'file' => 'required|file|mimes:xlsx,xls,csv',
'locals' => 'required|string',
'env' => 'required|string',
]);

try {
$client = new \Predis\Client('rediss://default:AYtBAAIjcDFiNjYzZDM3ZWM5YTI0M2FiYWMxZDY1YTc3YWViZDA5YXAxMA@steady-jennet-35649.upstash.io:6379');

$data = Excel::toArray(new KeyValueImport, $request->file('file'))[0];
$env = $request->env;
$locals = json_decode($request->locals, true);
$processedCount = 0;
$skippedCount = 0;
$errors = [];

// Chunk data for batching
$chunks = array_chunk($data, 500);

foreach ($locals as $local) {
foreach ($chunks as $chunkIndex => $chunk) {
$client->pipeline(function ($pipe) use (
$chunk,
$env,
$local,
&$processedCount,
&$skippedCount,
&$errors
) {
foreach ($chunk as $index => $row) {
if (!isset($row['url']) || !isset($row['redirect_to'])) {
$skippedCount++;
continue;
}

try {
$fromPath = $this->extractPath($row['url']);
$toPath = $this->extractPath($row['redirect_to']);

$redisKey = sprintf(
'%s-%s-%s',
$env,
$local,
ltrim(str_replace('//', '/', $fromPath), '/')
);

$redisValue = $toPath . '|301';
$pipe->set($redisKey, $redisValue);
$processedCount++;
} catch (\Exception $e) {
$errors[] = [
'row' => $index + 2,
'from' => $row['url'] ?? '',
'to' => $row['redirect_to'] ?? '',
'error' => $e->getMessage()
];
$skippedCount++;
}
}
});

// Wait before the next batch
if ($chunkIndex < count($chunks) - 1) {
usleep(5000000); // 5 seconds
}
}
}

return response()->json([
'success' => true,
'message' => 'File processed in batches successfully',
'processed_count' => $processedCount,
'processed_locals' => $locals,
'skipped_count' => $skippedCount,
'errors' => $errors
]);
} catch (\Exception $e) {
return response()->json([
'error' => $e->getMessage()
], 500);
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... d-in-redis
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»