Problema recorrer JSON y subida por API
Publicado por Manuel (2 intervenciones) el 22/10/2021 22:46:36
Buenas noches,
soy nuevo por este foro, es mi primer tema que escribo. A ver si me podéis dar la solución correcta a lo que quiero realizar.
Problematica:
Tengo un archivo json, el cual suele tener entre 9000 y 15000 items de datos de clientes.
La cosa es que quiero recorrer cada uno de estos item, para subirlo a un Saas mediante su API. Pero no quiero subir 9000 o 15000 item de una, si no que me gustaría que se subiera en grupos de 50 o 60 items, esperase al menos un segundo o 2 para subir el siguiente grupo.
Si lo hago todo de una, la API podría limitar la subida. Y se que si se hace algo más "lento" no habría problema.
Tengo el siguiente código que muestro abajo, pero incluso estableciendo el set_time_limit(30) antes de cada grupo, aun así, cuando el servidor mediante cron ejecutar el php, parece que no llega acabar el proceso.
Se que todo tiene su fin y no entre en bucle infinito, porque he realizado otras prueba comentando el set_time_limit(30) y el sleep(1), y termina correctamente.
A ver si podéis ayudar, ya sea porque veáis una mejora en el código, u otra forma de hacerlo.
Muchas gracias de antemano.
soy nuevo por este foro, es mi primer tema que escribo. A ver si me podéis dar la solución correcta a lo que quiero realizar.
Problematica:
Tengo un archivo json, el cual suele tener entre 9000 y 15000 items de datos de clientes.
La cosa es que quiero recorrer cada uno de estos item, para subirlo a un Saas mediante su API. Pero no quiero subir 9000 o 15000 item de una, si no que me gustaría que se subiera en grupos de 50 o 60 items, esperase al menos un segundo o 2 para subir el siguiente grupo.
Si lo hago todo de una, la API podría limitar la subida. Y se que si se hace algo más "lento" no habría problema.
Tengo el siguiente código que muestro abajo, pero incluso estableciendo el set_time_limit(30) antes de cada grupo, aun así, cuando el servidor mediante cron ejecutar el php, parece que no llega acabar el proceso.
Se que todo tiene su fin y no entre en bucle infinito, porque he realizado otras prueba comentando el set_time_limit(30) y el sleep(1), y termina correctamente.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$pathJSON = dirname(__FILE__).'/json_clientes.json';
$array = json_decode(file_get_contents($pathJSON), TRUE);
$arrayChunks = array_chunk($array, 50);
foreach ($arrayChunks as $k => $chunk) {
set_time_limit(30);
foreach ($chunk as $data) {
//Codigo para insertar mediante API
}
sleep(1);
}
A ver si podéis ayudar, ya sea porque veáis una mejora en el código, u otra forma de hacerlo.
Muchas gracias de antemano.
Valora esta pregunta
0