Dividir un bucle foreach

hypo -  
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   -
Hola,

Un pequeño problema en el desarrollo de una herramienta de sincronización web-to-store.

 <?php //Aquí hay una tabla con más de 3000 filas function get_ean() { //recupera todos los eans de un archivo excel de stock gracias a PHPExcel ... } // Aquí hay un bucle de tratamiento de los eans function eandata($ean) { // Aquí es donde se hace pesado, recuperación de diferentes informaciones en diferentes archivos excel (título, precio, descripción ....) recuperación de datos de proveedores (disponibilidades, metadatos (peso, tamaño, etc.) escritura de logs en archivos de texto ... en fin, ¡realmente exige muchos recursos! ... } // Y aquí un problema function traitement() { foreach ( get_ean() as $val) { $sortie = eandata($val); echo $sortie; } $exceltab = traitement(); // De hecho, la línea de arriba envía los 3000 ean al tratamiento y después solo una centena (varía entre 80 y 100) su servidor interrumpe el script. 


Entonces mi pregunta es si podemos dividir este tratamiento en paquetes de 50, por ejemplo.

Configuración: Windows / Firefox 69.0

4 respuestas

yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   Ambassadeur 1 588
 
Hola, tus explicaciones, a medio camino en tus comentarios, no son muy claras.
¿Crees que la función get_ean dura demasiado tiempo y que el primer echo llega demasiado tarde?
Cuando escribes: "De hecho, la línea de arriba envía los 3000 ean al procesamiento y luego solo una centena (varía entre 80 y 100, su servidor interrumpe el script", ¿de cuál hablas? Todas están por encima. "su servidor", ¿de qué se trata? ¿Cuál es el script que se interrumpe? ¿Por qué se interrumpe? ¿Es porque no hace echo?
3
hypo
 
¡Hola yg_be!

Así que sí, cuando digo la línea de arriba me refiero a $exceltab y dado que incluye la función "tratamiento", implícitamente se trata de todas las líneas del código ^^. "su servidor", perdona, es un error tipográfico, es "el servidor", en este caso un VPS de ovh.

La función get_ean retorna un array() con los eans.
La función eandata procesa 1 ean para transformarlo en una ficha de producto.
La función tratamiento envía los eans uno por uno a eandata.

Pero más simplemente, lo que me gustaría es agregar una función que venga a crear, digamos, etapas de 50 tratamientos, del tipo:
1. cuento las líneas de la tabla
2. cuento el número de paquetes de 50 a tratar
3. envío 1 paquete de 50 a tratamiento y devuelvo un valor para alimentar una barra de progreso
... en ese sentido.

Pero en realidad no sé si eso cambiaría algo, es más una pregunta abierta sobre cómo descomponer un gran tratamiento en muchos pequeños, si hay ejemplos de código (no he encontrado, por eso estoy aquí ^^).

Gracias de todos modos.
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588 > hypo
 
sin duda, sería el código de get_ean el que habría que retocar.
0
hypo
 
Aquí estoy pensando, en PHP hay una función "try", la idea sería tal vez poner un try en cada paquete y en caso de fallo relanzar el mismo paquete? tipo: *¡PERO ENTRARÁS, DIOS MÍO!*. Bueno, como he dicho, si alguien tiene ejemplos para darme, los acepto ^^
0
hypo
 
 function get_ean(){ //incluimos la biblioteca PHPExcel para leer nuestros archivos .xls require_once plugin_dir_path( __FILE__ ) . 'PHPExcel1/Classes/PHPExcel.php'; require_once plugin_dir_path( __FILE__ ) . 'PHPExcel1/Classes/PHPExcel/IOFactory.php'; $xls_STOCK = plugin_dir_path( __FILE__ ) . 'files/STOCK.XLS'; $inputFileType = 'Excel5'; $inputFileName = $xls_STOCK; // pasamos por un try porque es muy problemático try { $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); $sheetData = $objPHPExcel->getActiveSheet(); $highestRow = $sheetData->getHighestRow(); $highestColumn = $sheetData->getHighestColumn(); $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); for ($row = 2; $row <= $highestRow; ++$row) { for ($col = 2; $col <= $highestColumnIndex; $col += 10 ) { $eans[] = $sheetData->getCellByColumnAndRow($col, $row)->getValue(); } } return $eans; } catch(Exception $e) { die('Error al cargar el archivo "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage()); } } 


devuelve

 code_ean13 9782950460103 9782813808240 9782956325635 3700126703829 3700126717925 3700126705588 3700126707490 3700126717420 3700126707469 3700126705618 3700126707520 3700126707544 3700126708435 3700126708961 3700126708978 3700126709081 3700126710575 3700126718113 3700126710049 3700126710056 3700126710124 3700126710650 3700126746284 3700126718168 3700126718243 3700126716010 3700126716041 3700126746789 3700126705014 3700126711633 3100000005986 4250888109029 X000KITGTV 1298560 3700126704918 3100000005993 X000XLEWSZ 3329680151602 3329681144634 3329689495622 3329681133232 3130630138068 3130632044206 3130630580676 3427140344837 3100000005498 3100000005481 3661362134863 4016795360447 5414307091336 3700761402385 3553231594024 3020122350200 3329680472103 3329680173109 3329680175103 3560239382751 3250650066520 3086120017248 3100000005856 3250650219841 3553231128496 3660942000246 3660942060370 3660942016186 3154143244054 3154144402101 5014702026478 3086123329263 3100000005627 3037921820094 3037920182001 3037920122007 3037920132006 3037920162003 3437016000200 3329683031611 3592930012514 1133296811515 8852641522562 3329681154138 3329680185706 3255460193893 3329680147117 3329680471106 3503167140000 3154142441201 3130630851004 3130630085409 3086123154766 3086123154506 8000825654404 3086123466012 3760032831894 3503167210000 3154141961014 3329683033622 3503167190005 9781439744475 9781439744536 9781439735640 3329680961775 3561865703095 3501179531847 7638900202410 4008496810321 4902505163180 3329680142044 3134375231626 8858741700947 3020123872046 3134375261418 3329681151595 3329681151540 3661075177119 3086123395787 3219918252136 3700460840822 3700460839635 3219918252259 4902505085420 3026980258955 3026980255930 3219912634488 3700460840662 3561864230899 3700031730583 3561864220463 74427848477 3130633406416 3270220060970 3086124000154 3270220003496 3270220076421 3250650064595 3437012200000 3288588070012 3660173189581 3660173177168 5010065030077 3250650005178 3553231119135 3329680147926 3329680117912 3154143241060 3329680447118 3154143241053 3437014994068 3086123449251 3270220002758 3416790022325 3037921400005 3037920202006 3370441963996 3020123661060 5709750004386 3553231111214 3103220009260 3103220027363 3700299931999 3661075132453 3329680374209 3329680633627 3329682031612 3329682037416 3329682033623 3020120000497 4960999789361 3660942002509 3660942007368 3329680967708 8717794816480 3169208432017 3553231751199 3154144992107 3329680687217 3130630511991 3130630516996 3270220060963 3086123343153 5010065074071 8411782431920 3086124000352 3086124000482 4006381124447 3660173185033 3250650066551 4006333054136 3660942004619 3045058206230 7638900248333 8711717004138 8711717004183 3660942004640 3266790236891 3130630056102 4005401250128 3130630132875 3130630132790 3086129998975 4902505134654 71662150556 3270220093350 3020122360209 3020122370000 8008285096109 5014702026393 3013648074866 5412479019813 3553231128502 3130630000419 3130630131601 3503167200001 3154140393007 4007817310748 3467452040133 3154143252059 3154141194108 3154145347548 3154147313107 3086129999699 4902505342080 3086129998951 4046719287598 4008496677986 3700126712166 50375301 3020123277148 5010065984349 3279392708918 9781439734186 9781439744079 9781439744352 9781439744390 3020123277124 3329682018453 3553231409281 3329680968538 8993282376500 5014702026324 3130630129912 7638900297331 3045058208753 3130632555108 74427841089 3134375014021 3130630032502 3130630000433 3370440004508 3130630135005 3130630231707 3020120022604 3329683037484 8021684006012 3134375261920 51131598546 3134375261425 3130630352808 3295190015812 4006381401104 4006381401166 4007817504598 3086123356061 3086123355460 3086123270565 3086123001077 3086123270589 3086123270572 3086123270558 3700460835392 3700460833350 8008285095133 8008285095126 4902778805244 8008285098714 8008285098707 4902505322723 4902505399213 4902505085406 4902505085758 4902505085697 4902505085703 4902505085680 4902505085765 4902505438318 3154145069006 70330512122 3130630053125 4026700501407 4008496550692 4008496550616 3154145935004 3154145935011 5705831026377 3329680133202 3329680136005 3553231119357 5018206292223 3553231121138 7313468634001 5705831106369 3270240113366 3329680175110 3250650113200 3250650113309 3457707680122 3250650002849 3250650002627 5011247020329 5011247101974 3370441011024 3250650002610 7313469013034 3270240600132 3518200000258 3141728704706 3173740097603 3045670007017 3371010213108 3108720615010 3067335310843 3130630140528 8410782115953 3130632066901 3457701201125 3086129999576 4902505420788 4902505420771 4902505420801 3503168000006 70330101241 3086123132948 3086123339903 3086126600420 3413560000507 3148957572434 3020121062807 3148957872206 3020129423082 3416790002136 3416790002143 3370442963094 3416790002419 3416790002433 5705831012851 3700092234822 3266792211858 3266792211964 3266792211926 3383430133027 3383430133621 3383430133645 3383430133089 3383430133119 3383430133157 3383430133355 3383430133041 3383430133072 3383430133133 3383430133362 3383430133102 3383430133201 3661075132378 3100000004781 4011569024488 3020120031606 3250650095629 3130630130949 3130630130970 3210330010021 3329680311709 3329680693416 3020120031507 3329680368901 3329680311907 3329682033272 3329682031674 3329680379709 3020122873440 3329680378009 3329680316001 3020120804712 3592930003864 3592930003109 3020122874348 3700162406555 3130632135010 3329680151701 9008056833062 4012700301178 3034325200798 4012700301215 3459593500010 3329680951028 4902778140024 4902778140055 3553231593669 3457702683227 3329680631814 3329680221602 3329680177404 3045058206902 3553231111368 3045052230316 3045052230310 3100000004934 3045052630260 3383430171418 3411031701014 40267708 30019393 3130630131038 4007817550021 3503167110003 3329680147124 3329680442106 3013643650010 3219911231008 3086124000406 3086124000413 3270220018629 3270220018667 8595147801129 8595147801143 8595147801136 4007817180006 3329680951066 3329680951349 3329680951141 3329680951271 3329680951738 3329680951295 3329680951547 3329680951585 3329680951080 3329680951110 3329680951332 3329680951608 3329680951202 3329680951134 70330421936 70330421943 51131592094 3100000005214 5705831012325 21200726545 21200726576 3416790418012 4004764850129 3026981271304 8711717004206 3250650095421 3250650002979 3140290461000 3140290461161 3660942004695 3660942004633 3660942104630 3451960000116 3270240112772 3270241119268 3270241119145 3270241119558 3270241119282 3270241119251 3270241010930 3270241119060 3045051813107 3329680173000 3045051813312 3660942001410 3130630053040 3130630132745 3329680135107 3474370160027 3474370750020 3086120120047 3474370750044 3086123002029 3086123002036 4902778916162 4902505134678 4902505198243 3020122320203 3130630133063 3501170767597 3457709806865 3154140104504 3167866780006 3065501030014 3065501030250 3065501030038 3065501030168 3065501030557 3065501030588 3065501030199 3065501030069 3065501030397 3086124000383 3130630066156 3130630086895 3503167250006 5705831370111 41689300494 3130630131632 3130630131625 3130632074005 3370440011025 3134375377485 4007817250075 4902505312311 4902505312328 4902778588802 4046719055890 885631716441 3154143701113 74040734034 8008285098721 3501170958117 3148950027764 3148959921001 8715946384269 3065503302003 3250650903306 3661075014391 3270241006247 3100000004798 4902505142819 4902505087998 4902505087950 4902505087981 5705831012844 3100000004736 3100000000905 3100000000882 3240180026613 4084900421994 4007817310809 3553231746171 3108727052504 3270220029267 3134375349864 3329680189803 3329680196900 3065501960137 3065501960731 3065501960151 3065501960717 3065501960588 3065501960441 3065501960069 3065501960502 3413569240003 3154142792105 3154140279004 3457709116445 3154142440402 3020120028019 3020120827346 3523930060977 8021684006029 4977766686242 3445266341318 4004675044075 4004675044006 51131791749 21200728235 3462156407404 70330510883 4006381333672 4006381135924 4006381135894 4006381135900 3086123001060 70330171589 70330171572 3329680990966 3086126100685 3501170125502 8008285095157 8008285095140 8008285096178 3501170958124 8008285096116 3501170958155 4902505358067 4902505322716 4902505391675 4902505085727 4902505085741 3329680367379 3086126734125 3154142226334 4012700940872 4012700940889 3329680367386 3474370509826 3457708532222 5705831005921 3100000000844 3100000004095 3459594992029 3114524037811 3329680979909 3249445721003 3249445722000 4014509003123 3130630000334 3459593491318 3459593580012 3459593491516 5705831013124 3700092234914 3329680080391 3329681128108 3329683128106 3329681129525 3329683128380 4026700436051 40267692 4902778140109 4007751368591 4902778916599 4902505326516 4902505134661 4026203989436 3154143210110 3154143200111 3154143460119 4013702011140 3154143100114 5902812002027 3154143612112 3329685554934 3020121695036 3329681751122 884955064900 3020121684009 3020121687017 3020121685013 3020121684016 3020121684061 3020121686010 3020121686041 3154143450110 3154143300118 3250650064519 3250650002597 3154140360092 3510140040844 3130630126645 4902505402708 3086126100326 3372970001613 3372970001620 3383430133348 3329680815122 4022118122128 4022118122081 4050003709987 4050003926667 3329680971323 3329681951324 634041188948 3130630000136 3130630131045 4003273607651 3329681951423 3130632009304 3037921186497 6970263920923 3250650066537 3130630055129 3130630055716 3130630055648 3130630055631 3130630055686 3130630469711 3130630479703 3154146935003 3045052430310 3130630537106 5055173118705 5055173132749 X000HDQHVT 40267609 9004362302964 3130630131083 3020126874245 3045050085222 3065501011204 9782490250004 3700092236529 3700092236185 5705831020320 3700092236086 3034325106496 3700196152039 3250650095452 3250650095469 3329686613258 3329686655869 X000EIOYZD 3329680000276 24470 24481 3130630136064 3130632040406 3130630058502 3130632065102 3130630007425 3130632009601 3130632096205 3130630132783 8000825461200 3760028295587 3135259563482 3329688118614 3329688118607 4902505275845 3013648070011 5013922068138 3130630000624 51141341217 5414977053658 3147281102010 3760084420008 3130630059257 3130630032403 4902778140093 3329681136332 3020123779642 4004764018642 3329680102901 8004839589677 3148953171044 3148950042910 X000G6XY9F 3329680961850 3329680961867 3329680961768 3329680965544 3148950671158 8004839175672 8717448036554 4891199042140 5000394067820 4902505373978 4902505373961 3148950171535 3329680814545 3329681140940 3329681139005 3397220176545 3397220175890 3397220176521 4016795360454 3397220176514 3397220158367 3329681139586 4009445022369 3045050540349 4902778916278 4902778916261 4001504594688 4001504584535 3100000005559 3371010127573 3141728704720 3329680184402 3329680197303 3065501960083 3037921199701 3329680820317 3329681141480 3760084420015 4007817708323 4902505402685 70330318656 3501170125953 4902505156403 4902505156380 4902505156410 4902505275821 4902778762646 4902778762653 3100000005528 3249445728002 3130630541226 3130630540731 92399563358 3329680086164 3329680988727 3329683282242 3329680086379 4891320368798 3329680080384 4902505326530 3086120000677 7638900248357 7638900095777 7638900295641 5000394002432 74427841034 3700299926490 8018190077797 3437017127036 772164252 4891199000058 3181860250556 X000QMIU1B 5014047563225 8007315513005 8714574584287 X000A8TUPB 884962780787 883585706105 885631873687 3225430000834 3597159077023 4008496537280 5000394020306 3262190553316 884962780558 4977766694056 4977766694063 4977766694070 4977766694049 5014047560217 4977766627887 4977766627894 4977766627900 4977766627917 4977766648493 4977766659628 4977766659567 4977766659598 4977766659659 4960999865300 4960999273020 4960999617039 4960999670027 4960999670034 4960999670041 4960999670058 LPNHE23910610 8714574631813 4549292032857 4960999864853 4960999864822 4960999864792 4960999864761 4960999273235 4960999672151 4960999974248 4960999617015 4960999577470 4960999577494 4960999577555 4960999577517 4960999577531 4960999272672 4960999272702 4960999272825 8715946625003 8715946359762 8715946356426 8715946356440 8715946356464 8715946356488 8715946360140 8715946360188 8715946360225 8715946360263 8715946495453 8715946492612 8715946493145 8715946494500 8715946624686 8715946494517 8715946494524 8715946624723 8715946624747 88698205440 882780600799 882780600812 882780600805 882780600782 884962780701 884962780725 88698191972 884962780497 884962780473 884962770160 884962780503 884962780480 887758699492 884962894545 888793803042 884962780572 884962780510 884962780565 884962780596 884962780619 889894729071 889894729101 889894508911 88698200186 88698004272 88698613849 884962780626 882780155152 884962780435 887111497338 725184104152 725184104121 725184104183 8715946624624 734646967099 734646967075 734646967037 734646349253 734646306157 734646306164 734646306171 734646306140 734646960687 734646964425 734646964432 734646964982 734646964784 6955530920899 3425160148411 X000Y2TV8J 632983017371 632983017340 6955530920882 632983017289 95205831795 7638900083057 7638900052008 7638900379914 7638900248340 3225430000636 8715946624990 8715946361222 8715946624549 8715946624648 4007176130636 5010994944919 4007176130643 3700460840280 5055964712563 5055964718053 3700789276159 3700789267522 3700789267485 3700789234203 5055964719883 5055964719890 5055394010468 808736152747 829160798011 882780316492 808736558136 3437014044053 3114524037927 887930506198 5702015350617 734646158169 5010994960575 5010993339945 3597150299394 3597150327509 3597150327516 3597150002970 3597150002789 3597150149989 3597150165033 3597157502299 3597150290544 3597150327707 3597150327752 3597150299370 3597150327394 3597150327424 3597150327554 3597150298922 3597150002772 3597150295556 3597150295525 3597150299226 3597150125693 3597150299233 3597150002871 3597150295341 3597150295358 3597150295204 3597150327912 3597150327882 3597150327899 3597157554618 3597150353171 3597150353188 3597150312581 3597150312543 3597150353195 4710977210192 4710977210253 3700653514554 5014047566851 882780349568 886111138876 6932357492198 3437017164024 3597150317524 5000394033917 5000394068124 5000252003809 5000394030305 5000394123106 7638900083071 5000394062986 4904530589218 5000394030367 7638900950069 7638900950083 96178225 5000394504424 4904530589270 3225430261501 3225433611488 3100000005702 8412668159334 4005556869343 772164207 622222053994 3065505664055 3065505664024 4977766636629 3100000005719 884420567523 4977766630733 5010993467518 5010993467556 4008496276929 4008496626656 4008496270972 4008496152865 9781409540380 9781409541240 9781409592068 9781450882804 9782012252516 9782013939270 9782013939300 9782013943031 9782013943079 9782013943116 9782013943140 9782013981552 9782013981590 9782013981644 9782013981668 9782017060505 9782020888059 9782021000399 9782021012859 9782021089745 9782021116199 9782021340747 9782047351291 9782070313495 9782070351404 9782070362516 9782070373628 9782070410514 9782070448272 9782070450497 9782070452170 9782070564545 9782070625949 9782070633340 9782070646098 9782070646111 9782070648474 9782070655328 9782070657681 9782070660728 9782070776290 9782072693144 9782072743139 9782072787416 9782072823428 9782072823879 9782072824326 9782072824425 9782072824470 9782075079372 9782075085830 9782075087117 9782080688170 9782081249141 9782081294455 9782081424999 9782081471757 9782081490864 9782092549698 9782092565490 9782092579718 9782092580493 9782092588581 9782092588604 9782092588628 9782130619376 9782130628583 9782130630456 9782200294465 9782203044456 9782203048706 9782203066243 9782203080065 9782203107663 9782203125810 9782203125933 9782203160521 9782203160538 9782203192560 9782203192614 9782204110914 9782207113905 9782210757028 9782210757035 9782210757042 9782210757066 9782210757073 9782210757080 9782210757097 9782210757103 9782210758971 9782210758988 9782210758995 9782210759008 9782210759015 9782210759022 9782210989719 9782211207492 9782211211222 9782211211611 9782211216272 9782213629681 9782213677637 9782213704951 9782213709833 9782213712499 9782215108351 9782215121183 9782215135302 9782221134078 9782221140307 9782221145845 9782221157879 9782221159491 9782221197462 9782221203323 9782221216248 9782226067586 9782226193308 9782226244314 9782226249678 9782226252654 9782226258359 9782226325204 9782226328670 9782226392121 9782226440013 9782226441706 9782228920520 9782234083622 9782246713210 9782246771517 9782246800262 9782246808633 9782246814887 9782246821250 9782253001454 9782253025320 9782253049937 9782253074328 9782253087335 9782253100386 9782253100416 9782253100492 9782253108382 9782253128335 9782253129714 9782253129905 9782253148555 9782253157625 9782253160120 9782253160755 9782253161486 9782253164524 9782253164548 9782253174141 9782253176763 9782253184416 9782253188216 9782253188384 9782253237624 9782253237884 9782253237907 9782253238027 9782253257639 9782253258247 9782253258421 9782253259725 9782253259879 9782253259947 9782253820079 9782253820130 9782258079960 9782258090088 9782258091320 9782258101067 9782258103221 9782258104488 9782258105874 9782258106949 9782258107960 9782258110465 9782258114005 9782258116375 9782258118171 9782258118621 9782258133846 9782258135000 9782258135130 9782258162839 9782259251259 9782260019152 9782260021148 9782260053217 9782264012593 9782264049186 9782264051264 9782264054081 9782264054487 9782264055934 9782264058324 9782264058737 9782264058942 9782264059024 9782264059277 9782264059307 9782264059420 9782264060082 9782264060518 9782264060532 9782264060594 9782264060624 9782264060976 9782264061041 9782264061065 9782264061126 9782264061140 9782264061249 9782264061614 9782264061843 9782264062017 9782264062147 9782264062253 9782264062390 9782264062758 9782264062833 9782264062864 9782264063137 9782264063267 9782264063489 9782264063601 9782264063984 9782264064455 9782264064714 9782264064769 9782264066015 9782264066572 9782264070753 9782264073167 9782265089051 9782265089754 9782265117112 9782265118058 9782265118508 9782266129237 9782266129893 9782266132190 9782266157438 9782266157469 9782266185691 9782266188906 9782266207683 9782266210188 9782266210997 9782266219976 9782266220040 9782266221450 9782266222365 9782266224031 9782266226226 9782266227827 9782266232296 9782266234870 9782266235259 9782266235365 9782266235709 9782266235747 9782266237208 9782266237437 9782266237833 9782266238397 9782266242387 9782266243117 9782266243155 9782266243926 9782266243940 9782266244961 9782266245487 9782266246446 9782266247634 9782266248808 9782266248815 9782266249072 9782266250030 9782266250191 9782266250528 9782266253925 9782266254328 9782266254489 9782266254496 9782266254601 9782266255134 9782266255141 9782266255479 9782266257275 9782266257282 9782266258272 9782266258654 9782266263689 9782266264693 9782266267304 9782266268981 9782266269087 9782266269094 9782266270809 9782266272452 9782266272988 9782266273459 9782266276139 9782266276542 9782266276573 9782266277075 9782266278232 9782266279604 9782266279864 9782266281911 9782266282529 9782266283786 9782266285001 9782266285506 9782266286091 9782266286381 9782266286459 9782266286824 9782266287159 9782266288552 9782266289160 9782266289542 9782266289863 9782266290586 9782266290821 9782266290845 9782266291224 9782266291354 9782266291361 9782266291491 9782266291569 9782266292245 9782266292993 9782266293006 9782266293044 9782266293099 9782267025286 9782267028782 9782278059522 9782278081608 9782283024614 9782290040355 9782290072646 9782290095423 9782290143698 9782290155158 9782290166529 9782290171455 9782290173411 9782290312988 9782330001742 9782330012595 9782330053024 9782330066376 9782330119942 9782330119959 9782330119973 9782350002163 9782350003306 9782350871608 9782351110126 9782351685112 9782351813379 9782352881094 9782354132439 9782354251345 9782354251864 9782355020100 9782355042843 9782355272059 9782355580802 9782355830532 9782355841170 9782355841798 9782355841989 9782355842573 9782355842597 9782355842764 9782355842894 9782355843105 9782355843204 9782355847578 9782357204584 9782359620009 9782359620542 9782359620856 9782360755523 9782360756735 9782360756759 9782360983131 9782360984046 9782362610158 9782362610165 9782363603937 9782364935501 9782365492133 9782365693059 9782365721301 9782365753364 9782366530919 9782366531176 9782366531480 9782366721584 9782366721669 9782367460291 9782367460505 9782367460642 9782367461274 9782367462462 9782367463544 9782367463971 9782367464305 9782367465395 9782367466248 9782367466323 9782367466507 9782367466897 9782367466903 9782367467252 9782367467283 9782367468082 9782367468198 9782367468853 9782367469065 9782367469416 9782367469560 9782367469591 9782367469621 9782367469638 9782367469645 9782367469768 9782367730035 9782367730738 9782367730745 9782368900697 9782368904299 9782369750086 9782369750109 9782369750246 9782369750307 9782369750314 9782369750369 9782369750383 9782369750406 9782369750444 9782369750482 9782369750499 9782369750543 9782369750659 9782369750703 9782369750710 9782369750727 9782369750734 9782369750741 9782369750802 9782369750826 9782369750888 9782369750895 9782369750901 9782369750949 9782369750956 9782369751083 9782369751090 9782369751106 9782369751113 9782369751120 9782369751151 9782369751168 9782369751175 9782369751182 9782369751199 9782369751212 9782369751236 9782369751243 9782369751250 9782369751267 9782371043961 9782371090590 9782371261112 9782373460131 9782374481210 9782374481296 9782377612369 9782377612383 9782490250028 9782490250042 9782490623013 9782508000621 9782508024412 9782603015391 9782603016404 9782702156513 9782706817335 9782707186379 9782707322579 9782707328618 9782709656092 9782709661485 9782709662390 9782709665469 9782710789482 9782711200993 9782713021466 9782714450258 9782714453006 9782714455369 9782714455796 9782714455871 9782714458636 9782714458957 9782714479228 9782715232495 9782729854935 9782732038926 9782732039589 9782732039725 9782735703937 9782737350771 9782737366413 9782738133915 9782740314685 9782745938855 9782745962454 9782746688469 9782746738263 9782747038881 9782747044202 9782749129426 9782749136318 9782749140933 9782749141077 9782749150628 9782749152646 9782749161839 9782749920733 9782749921563 9782749921587 9782749921679 9782749922119 9782749922126 9782749922188 9782749922386 9782749923130 9782749923802 9782749923949 9782749924502 9782749925523 9782749934778 9782749939094 9782750908973 9782751401152 9782751402296 9782751406669 9782755641585 9782755803327 9782755806984 9782756427935 9782757868454 9782757869208 9782757869475 9782757869536 9782757871799 9782757874738 9782757875452 9782757875537 9782803673131 9782806305442 9782810426768 9782811228262 9782812911248 9782812911538 9782812931703 9782812931710 9782812931727 9782812931734 9782812931741 9782812931758 9782812931765 9782812931772 9782813804198 9782813807816 9782813810915 9782813810960 9782813811295 9782813812759 9782817706009 9782821211025 9782841116232 9782841116621 9782841725595 9782842181765 9782842184292 9782842534950 9782843376832 9782843376924 9782843377020 9782843738456 9782843901959 9782844552044 9782844552112 9782844661586 9782844661616 9782844664105 9782845636712 9782845637351 9782845637399 9782845639812 9782845940888 9782846404082 9782846404181 9782847209358 9782848011981 9782848762968 9782848767222 9782848861579 9782848866772 9782849104477 9782849905159 9782867468391 9782875570031 9782876734418 9782876738775 9782877068161 9782877725866 9782877726122 9782878335118 9782878337525 9782882502971 9782889340002 9782889620029 9782889620036 9782889620043 9782889620050 9782889620067 9782895400684 9782911137020 9782911137273 9782911551871 9782911853197 9782911853210 9782912184740 9782912184900 9782912184924 9782912789419 9782915729108 9782915729177 9782915729191 9782915729221 9782915729238 9782915729245 9782915729320 9782915729382 9782915729481 9782915729559 9782916788777 9782917032015 9782917032145 9782917032237 9782917032268 9782917032435 9782917032442 9782917032473 9782917032596 9782917032633 9782917032718 9782917032961 9782917032985 9782917032992 9782917056332 9782917843345 9782918194194 9782918194330 9782918194545 9782918233503 9782918352303 9782918352471 9782918352488 9782918352495 9782918352600 9782918352617 9782918352624 9782918352709 9782918352716 9782918352723 9782918352747 9782918352792 9782918352808 9782918352877 9782918352884 9782918352891 9782918412274 9782918412632 9782918412649 9782918412656 9782919545117 9782919545223 9782919545247 9782919545308
0
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
 
Hola,

Pffuiioouuuu... tuve que leer toda la discusión completa 20 veces para entender de qué se trata...

En fin..

Varias cosas...
- PhpExcel ya no se usa/mantiene. Ahora hay que pasar a PhpSpreadsheet
- En lugar de leer celda por celda su contenido para ponerlo en un array... hay una función toArray
ya sea en phpexcel $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
o en phpSpreahSheet: https://phpspreadsheet.readthedocs.io/en/latest/topics/accessing-cells/#retrieving-a-range-of-cell-values-to-an-array

También existen Iteradores para recorrer las celdas en lugar de usar for/foreach

Eso es todo..
Con esto.. deberías tener un código un poco más eficiente...

--
Atentamente,
Jordane
1
hypo
 
¡Oh genial! Voy a intentar trastear con eso, gracias.
0
hypo
 
Entonces instalé PhpSpreadsheet con el plugin "Php SpreadSheet Library WordPress Plugin" porque en realidad tengo un CAP de albañilería, jaja.

En fin, ahora he intentado la función toArray, pero hace algo raro, en lugar de poner todas las filas en un solo array, crea un array por cada fila:

 function get_ean() { if ( defined('CBXPHPSPREADSHEET_PLUGIN_NAME') && file_exists( CBXPHPSPREADSHEET_ROOT_PATH . 'lib/vendor/autoload.php' ) ) { //Incluir PHPExcel require_once( CBXPHPSPREADSHEET_ROOT_PATH . 'lib/vendor/autoload.php' ); //ahora tomar instancia try { $xls_STOCK = plugin_dir_path( __FILE__ ) . 'files/STOCK.XLS'; $inputFileName = $xls_STOCK; $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls(); $spreadsheet = $reader->load($inputFileName); $dataArray = $spreadsheet->getActiveSheet() ->rangeToArray( 'C2:C5', // El rango de la hoja de cálculo que queremos recuperar NULL, // Valor que debe devolver para celdas vacías TRUE, // ¿Se deben calcular las fórmulas? (el equivalente de getCalculatedValue() para cada celda) TRUE, // ¿Se deben formatear los valores? (el equivalente de getFormattedValue() para cada celda) TRUE // ¿Se debe indexar el array por fila y columna de celda? ); }catch(Exception $e) { die('Error al cargar el archivo "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage()); } return $dataArray; } } 


Ah, y de paso, no encontré la sintaxis para decir que tome toda la columna a partir de C2. He intentado cosas al azar ya que no encontré en la doc, como "C2:C*/C+/C++/++" pero sin éxito, jaja.

De todos modos, es cierto que se ve más claro y se ve más elegante, sobre todo porque me costó un montón pasar mi sitio a PHP7, al menos sirvió para algo.
0
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830 > hypo
 
Si miras bien la documentación del enlace que te di... encontrarás líneas como
 // Obtener el número más alto de fila y columna referenciado en la hoja de cálculo $highestRow = $worksheet->getHighestRow(); // p.ej. 10 $highestColumn = $worksheet->getHighestColumn(); // p.ej. 'F' 

Así que... con eso... puedes saber cómo definir la última de tu columna...
Algo así
 $worksheet = $spreadsheet->getActiveSheet(); $highestRow = $worksheet->getHighestRow(); $dataArray = $spreadsheet->getActiveSheet() ->rangeToArray( 'C2:C'.$highestRow, // El rango de la hoja de cálculo que queremos recuperar NULL, // Valor que debe ser devuelto para celdas vacías TRUE, // ¿Deberían calcularse las fórmulas (el equivalente a getCalculatedValue() para cada celda) TRUE, // ¿Deberían formatearse los valores (el equivalente a getFormattedValue() para cada celda) TRUE // ¿Debería el array estar indexado por fila y columna de celda ); 


Y si lees los comentarios que se encuentran en el código
TRUE // ¿Debería el array estar indexado por fila y columna de celda?

Deberías encontrar cómo devolver UN array como deseas...

En fin... solo hay que leer :-)
0
hypo
 
Ah, sí, pero la verdad es que estoy perdido. En Google Trad me dijo "¿La tabla debe ser indexada por fila de celda y columna de celda?", a lo que, por supuesto, respondí "¡kamoulox!". Y respecto a "highest row", estaba convencido de que se refería a la primera fila no nula, así que realmente debo dejar de interpretar, evidentemente no tengo la lógica correcta x).
0
hypo
 
¡Perfecto para el highestRow!

Solo hay que recordar declarar la hoja antes

 $worksheet = $spreadsheet->getActiveSheet(); $highestRow = $worksheet->getHighestRow(); $dataArray = $worksheet ->rangeToArray( 'C2:C'.$highestRow, // El rango de la hoja que queremos recuperar NULL, // Valor que debe ser devuelto para celdas vacías TRUE, // ¿Deben calcularse las fórmulas (equivalente a getCalculatedValue() para cada celda) TRUE, // ¿Deben formatearse los valores (equivalente a getFormattedValue() para cada celda) NULL // ¿Deben ser el array indexado por fila y columna de celda? ); return $dataArray; 


Sin embargo, no cambia el resultado poner NULL o FALSE en "¿Deben ser el array indexado por fila y columna de celda?", me pregunto si no es un parámetro que solo se utiliza cuando llamamos a varias columnas. De todos modos, voy a ver si no puedo simplemente aprovechar el resultado tal cual. ¡De todas formas, gracias!
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
Creo que el último parámetro permite decidir si se utilizan los números de línea y los números de columna como índice, o si los índices comienzan simplemente en 1. En cualquier caso, la respuesta será un arreglo de arreglos, lo que no debería plantear ningún problema.
0
hypo
 
¡Exactamente! ¡Bien visto ^^!
0
hypo
 
Hola,

Aquí estoy de nuevo :p

Entonces, después de haber implementado todo esto, esto es lo que sucede todo el tiempo:

 logs: 9782950460103 tratado con un stock de: 11! Número de productos restantes a tratar: 2907 memoria: 58754640 9782813808240 tratado con un stock de: 8! Número de productos restantes a tratar: 2906 memoria: 58847168 9782956325635 tratado con un stock de: 3! Número de productos restantes a tratar: 2905 memoria: 58832656 3700126703829 tratado con un stock de: 2! Número de productos restantes a tratar: 2904 memoria: 58832656 3700126717925 tratado con un stock de: 2! Número de productos restantes a tratar: 2903 memoria: 58879424 3700126705588 tratado con un stock de: 2! Número de productos restantes a tratar: 2902 memoria: 58856544 3700126707490 tratado con un stock de: 2! Número de productos restantes a tratar: 2901 memoria: 58856544 3700126717420 tratado con un stock de: 2! Número de productos restantes a tratar: 2900 memoria: 58856544 3700126707469 tratado con un stock de: 2! Número de productos restantes a tratar: 2899 memoria: 58856544 3700126705618 tratado con un stock de: 2! Número de productos restantes a tratar: 2898 memoria: 58856544 3700126707520 tratado con un stock de: 2! Número de productos restantes a tratar: 2897 memoria: 58856544 3700126707544 tratado con un stock de: 2! Número de productos restantes a tratar: 2896 memoria: 58856544 3700126708435 tratado con un stock de: 2! Número de productos restantes a tratar: 2895 memoria: 58903344 3700126708961 tratado con un stock de: 2! Número de productos restantes a tratar: 2894 memoria: 58880464 3700126708978 tratado con un stock de: 2! Número de productos restantes a tratar: 2893 memoria: 58880464 3700126709081 tratado con un stock de: 2! Número de productos restantes a tratar: 2892 memoria: 58880464 3700126710575 tratado con un stock de: 2! Número de productos restantes a tratar: 2891 memoria: 58880464 3700126718113 tratado con un stock de: 2! Número de productos restantes a tratar: 2890 memoria: 58880464 3700126710049 tratado con un stock de: 2! Número de productos restantes a tratar: 2889 memoria: 58880464 3700126710056 tratado con un stock de: 2! Número de productos restantes a tratar: 2888 memoria: 58880464 3700126710124 tratado con un stock de: 2! Número de productos restantes a tratar: 2887 memoria: 58880464 3700126710650 tratado con un stock de: 2! Número de productos restantes a tratar: 2886 memoria: 58880464 3700126746284 tratado con un stock de: 2! Número de productos restantes a tratar: 2885 memoria: 58880464 3700126718168 tratado con un stock de: 2! Número de productos restantes a tratar: 2884 memoria: 58880464 3700126718243 tratado con un stock de: 2! Número de productos restantes a tratar: 2883 memoria: 58880464 3700126716010 tratado con un stock de: 2! Número de productos restantes a tratar: 2882 memoria: 58880464 3700126716041 tratado con un stock de: 2! Número de productos restantes a tratar: 2881 memoria: 58880464 3700126746789 tratado con un stock de: 2! Número de productos restantes a tratar: 2880 memoria: 58927216 3700126705014 tratado con un stock de: 2! Número de productos restantes a tratar: 2879 memoria: 58951392 3700126711633 tratado con un stock de: 2! Número de productos restantes a tratar: 2878 memoria: 58975248 3100000005986 tratado con un stock de: 2! Número de productos restantes a tratar: 2877 memoria: 58952368 4250888109029 tratado con un stock de: 1! Número de productos restantes a tratar: 2876 memoria: 58952368 X000KITGTV tratado con un stock de: 4! Número de productos restantes a tratar: 2875 memoria: 58952368 1298560 tratado con un stock de: 2! Número de productos restantes a tratar: 2874 memoria: 58952368 3700126704918 tratado con un stock de: 2! Número de productos restantes a tratar: 2873 memoria: 58952368 3100000005993 tratado con un stock de: 2! Número de productos restantes a tratar: 2872 memoria: 58952368 X000XLEWSZ tratado con un stock de: 2! Número de productos restantes a tratar: 2871 memoria: 58952368 3329680151602 tratado con un stock de: 3! Número de productos restantes a tratar: 2870 memoria: 58952368 3329681144634 tratado con un stock de: 6! Número de productos restantes a tratar: 2869 memoria: 58952368 3329689495622 tratado con un stock de: 3! Número de productos restantes a tratar: 2868 memoria: 58952368 3329681133232 tratado con un stock de: 12! Número de productos restantes a tratar: 2867 memoria: 58952368 3130630138068 tratado con un stock de: 6! Número de productos restantes a tratar: 2866 memoria: 58952368 3130632044206 tratado con un stock de: 3! Número de productos restantes a tratar: 2865 memoria: 58952368 3130630580676 tratado con un stock de: 3! Número de productos restantes a tratar: 2864 memoria: 58952368 3427140344837 tratado con un stock de: 15! Número de productos restantes a tratar: 2863 memoria: 58952368 3100000005498 tratado con un stock de: 21! Número de productos restantes a tratar: 2862 memoria: 58952368 3100000005481 tratado con un stock de: 27! Número de productos restantes a tratar: 2861 memoria: 58952368 3661362134863 tratado con un stock de: 3! Número de productos restantes a tratar: 2860 memoria: 58952368 4016795360447 tratado con un stock de: 3! Número de productos restantes a tratar: 2859 memoria: 58952368 5414307091336 tratado con un stock de: 3! Número de productos restantes a tratar: 2858 memoria: 58952368 3700761402385 tratado con un stock de: 36! Número de productos restantes a tratar: 2857 memoria: 58952368 3553231594024 tratado con un stock de: 3! Número de productos restantes a tratar: 2856 memoria: 58952368 3020122350200 tratado con un stock de: 23! Número de productos restantes a tratar: 2855 memoria: 58952368 3329680472103 tratado con un stock de: 29! Número de productos restantes a tratar: 2854 memoria: 58952368 3329680173109 tratado con un stock de: 30! Número de productos restantes a tratar: 2853 memoria: 58952368 3329680175103 tratado con un stock de: 13! Número de productos restantes a tratar: 2852 memoria: 58983208 3560239382751 tratado con un stock de: 6! Número de productos restantes a tratar: 2851 memoria: 58968696 3250650066520 tratado con un stock de: 5! Número de productos restantes a tratar: 2850 memoria: 58968696 3086120017248 tratado con un stock de: 9! Número de productos restantes a tratar: 2849 memoria: 59001208 3100000005856 tratado con un stock de: 3! Número de productos restantes a tratar: 2848 memoria: 58986168 3250650219841 tratado con un stock de: 3! Número de productos restantes a tratar: 2847 memoria: 58986168 3553231128496 tratado con un stock de: 21! Número de productos restantes a tratar: 2846 memoria: 58986168 3660942000246 tratado con un stock de: 3! Número de productos restantes a tratar: 2845 memoria: 59019520 3660942060370 tratado con un stock de: 24! Número de productos restantes a tratar: 2844 memoria: 59036888 3660942016186 tratado con un stock de: 11! Número de productos restantes a tratar: 2843 memoria: 59054704 3154143244054 tratado con un stock de: 30! Número de productos restantes a tratar: 2842 memoria: 59040192 3154144402101 tratado con un stock de: 6! Número de productos restantes a tratar: 2841 memoria: 59040192 5014702026478 tratado con un stock de: 18! Número de productos restantes a tratar: 2840 memoria: 59040192 3086123329263 tratado con un stock de: 11! Número de productos restantes a tratar: 2839 memoria: 59040192 3100000005627 tratado con un stock de: 180! Número de productos restantes a tratar: 2838 memoria: 59040192 3037921820094 tratado con un stock de: 15! Número de productos restantes a tratar: 2837 memoria: 59040192 3037920182001 tratado con un stock de: 6! Número de productos restantes a tratar: 2836 memoria: 59040192 3037920122007 tratado con un stock de: 19! Número de productos restantes a tratar: 2835 memoria: 59040192 3037920132006 tratado con un stock de: 17! Número de productos restantes a tratar: 2834 memoria: 59040192 3037920162003 tratado con un stock de: 21! Número de productos restantes a tratar: 2833 memoria: 59040192 3437016000200 tratado con un stock de: 24! Número de productos restantes a tratar: 2832 memoria: 59040192 3329683031611 tratado con un stock de: 26! Número de productos restantes a tratar: 2831 memoria: 59040192 3592930012514 tratado con un stock de: 3! Número de productos restantes a tratar: 2830 memoria: 59040192 1133296811515 tratado con un stock de: 24! Número de productos restantes a tratar: 2829 memoria: 59040192 8852641522562 tratado con un stock de: 14! Número de productos restantes a tratar: 2828 memoria: 59040192 3329681154138 tratado con un stock de: 96! Número de productos restantes a tratar: 2827 memoria: 59040192 3329680185706 tratado con un stock de: 6! Número de productos restantes a tratar: 2826 memoria: 59040192 3255460193893 tratado con un stock de: 8! Número de productos restantes a tratar: 2825 memoria: 59040192 3329680147117 tratado con un stock de: 9! Número de productos restantes a tratar: 2824 memoria: 59040192 3329680471106 tratado con un stock de: 12! Número de productos restantes a tratar: 2823 memoria: 59071016 3503167140000 tratado con un stock de: 6! Número de productos restantes a tratar: 2822 memoria: 59056504 3154142441201 tratado con un stock de: 3! Número de productos restantes a tratar: 2821 memoria: 59088984 3130630851004 tratado con un stock de: 24! Número de productos restantes a tratar: 2820 memoria: 59073944 3130630085409 tratado con un stock de: 27! Número de productos restantes a tratar: 2819 memoria: 59073944 3086123154766 tratado con un stock de: 69! Número de productos restantes a tratar: 2818 memoria: 59073944 3086123154506 tratado con un stock de: 63! Número de productos restantes a tratar: 2817 memoria: 59073944 8000825654404 tratado con un stock de: 10! Número de productos restantes a tratar: 2816 memoria: 59073944 3086123466012 tratado con un stock de: 9! Número de productos restantes a tratar: 2815 memoria: 59105568 3760032831894 tratado con un stock de: 171! Número de productos restantes a tratar: 2814 memoria: 59091056 3503167210000 tratado con un stock de: 5! Número de productos restantes a tratar: 2813 memoria: 59091056 3154141961014 tratado con un stock de: 12! Número de productos restantes a tratar: 2812 memoria: 59091056 3329683033622 tratado con un stock de: 2! Número de productos restantes a tratar: 2811 memoria: 59091056 3503167190005 tratado con un stock de: 99! Número de productos restantes a tratar: 2810 memoria: 59091056 9781439744475 tratado con un stock de: 3! Número de productos restantes a tratar: 2809 memoria: 59091056 9781439744536 tratado con un stock de: 6! Número de productos restantes a tratar: 2808 memoria: 59091056 9781439735640 tratado con un stock de: 6! Número de productos restantes a tratar: 2807 memoria: 59091056 3329680961775 tratado con un stock de: 8! Número de productos restantes a tratar: 2806 memoria: 59091056 3561865703095 tratado con un stock de: 12! Número de productos restantes a tratar: 2805 memoria: 59091056 3501179531847 tratado con un stock de: 3! Número de productos restantes a tratar: 2804 memoria: 59091056 7638900202410 tratado con un stock de: 6! Número de productos restantes a tratar: 2803 memoria: 59091056 4008496810321 tratado con un stock de: 3! Número de productos restantes a tratar: 2802 memoria: 59091056 4902505163180 tratado con un stock de: 32! Número de productos restantes a tratar: 2801 memoria: 59123872 3329680142044 tratado con un stock de: 3! Número de productos restantes a tratar: 2800 memoria: 59108832 3134375231626 tratado con un stock de: 6! Número de productos restantes a tratar: 2799 memoria: 59108832 8858741700947 tratado con un stock de: 27! Número de productos restantes a tratar: 2798 memoria: 59108832 3020123872046 tratado con un stock de: 12! Número de productos restantes a tratar: 2797 memoria: 59108832 3134375261418 tratado con un stock de: 108! Número de productos restantes a tratar: 2796 memoria: 59141600 3329681151595 tratado con un stock de: 3! Número de productos restantes a tratar: 2795 memoria: 59126560 3329681151540 tratado con un stock de: 13! Número de productos restantes a tratar: 2794 memoria: 59126560 3661075177119 tratado con un stock de: 15! Número de productos restantes a tratar: 2793 memoria: 59126560 3086123395787
0
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
 
Supongo que lo que nos muestras no se encuentra en la función de recuperación de los EAN, sino en tu otra función eandata ...
Como no sabemos lo que contiene.. nos será difícil responderte.
Pero dada los comentarios que colocaste en tu primera pregunta sobre esta función.. creo que hay que revisar un poco su "lógica".
Personalmente... almacenaría los diferentes datos en una base de datos en lugar de trabajar directamente con los archivos de Excel
Entonces será muy fácil recuperar la información deseada a través de consultas SQL y algunas uniones...

También puedes reducir el número de EAN a tratar cada vez, ya que ahora tienes el código necesario para elegir el "rango" de celdas a leer.
0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588
 
¿Qué desencadena la ejecución de tu script? Si quieres cortarlo en partes, tendrás que llamar a cada una de esas partes.
La memoria no aumenta casi nada, ¿por qué crees que esa es la causa de la detención del script? Podrías añadir pausas para verificar que no es el tiempo transcurrido el que causa el problema.
¿Cuánto tiempo transcurre aproximadamente antes de que se interrumpa?
0