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
Данные теряются во время объемного добавления в Redis ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1752579135
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);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79701991/data-is-being-lost-during-bulk-add-in-redis[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия