Scinder une boucle foreach
Fermé
hypo
-
4 oct. 2019 à 12:22
yg_be Messages postés 23392 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 - 6 oct. 2019 à 20:17
yg_be Messages postés 23392 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 décembre 2024 - 6 oct. 2019 à 20:17
4 réponses
yg_be
Messages postés
23392
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 décembre 2024
Ambassadeur
1 556
4 oct. 2019 à 12:50
4 oct. 2019 à 12:50
bonjour, tes explications, à moitié dans tes commentaires, ne sont pas très claires.
trouves-tu que la fonction get_ean dure trop longtemps, et que le premier echo arrive trop tard?
quand tu écris: "En effet la ligne au dessus balance les 3000 ean au traitement et après seulement une centaine (ca varie entre 80 et 100 leur serveur interrompt le script", de quelle s'agit-il? elles sont toutes au dessus. "leur serveur", de quoi s'agit-il? quel est le script qui est interrompu? pourquoi est-il interrompu? parce qu'il ne fait pas d'echo?
trouves-tu que la fonction get_ean dure trop longtemps, et que le premier echo arrive trop tard?
quand tu écris: "En effet la ligne au dessus balance les 3000 ean au traitement et après seulement une centaine (ca varie entre 80 et 100 leur serveur interrompt le script", de quelle s'agit-il? elles sont toutes au dessus. "leur serveur", de quoi s'agit-il? quel est le script qui est interrompu? pourquoi est-il interrompu? parce qu'il ne fait pas d'echo?
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
4 oct. 2019 à 15:24
4 oct. 2019 à 15:24
Bonjour,
Pffuiioouuuu... j'ai du relire la discussion complete 20 fois pour comprendre de quoi il retourne...
Bref..
Plusieurs choses...
- PhpExcel n'est plus utilisé/maintenu. Il faut désormais passer PhpSpreadsheet
- Plutôt que de lire cellule par cellule leur contenu pour le mettre dans un array... il existe une fonction toArray
que ça soit en phpexcel $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
ou en phpSpreahSheet : https://phpspreadsheet.readthedocs.io/en/latest/topics/accessing-cells/#retrieving-a-range-of-cell-values-to-an-array
Il existe également des Iterator pour boucler sur les cellules au lieu de passer par du for /foreach
Voila..
Avec ça.. tu devrais avoir un code un peu plus performant...
Pffuiioouuuu... j'ai du relire la discussion complete 20 fois pour comprendre de quoi il retourne...
Bref..
Plusieurs choses...
- PhpExcel n'est plus utilisé/maintenu. Il faut désormais passer PhpSpreadsheet
- Plutôt que de lire cellule par cellule leur contenu pour le mettre dans un array... il existe une fonction toArray
que ça soit en phpexcel $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
ou en phpSpreahSheet : https://phpspreadsheet.readthedocs.io/en/latest/topics/accessing-cells/#retrieving-a-range-of-cell-values-to-an-array
Il existe également des Iterator pour boucler sur les cellules au lieu de passer par du for /foreach
Voila..
Avec ça.. tu devrais avoir un code un peu plus performant...
Alors j'ai installer Phpspreadsheet avec le plugin "Php SpreadSheet Library WordPress Plugin" parce que j'ai quand meme un CAP maçonnerie a la base mdr.
Bref, là j'ai essayer la fonction toArray mais ça fait un truc bizarre, au lieu de mettre toutes les lignes dans 1 tableau ça créer 1 tableau par lignes:
Ah et au passage, j'ai pas trouver la syntaxe pour dire de prendre la colonne entière a partir de C2.
J'ai essayer des trucs au pif vu que je trouver pas dans la doc genre "C2:C*/C+/C++/++" mais sans succès ^^
En tout cas c'est vrais qu'on y vois plus clair et que ça fait plus classe surtout que je me suis bien fait ch** a passer mon site en php7, au moins ça aura servis.
Bref, là j'ai essayer la fonction toArray mais ça fait un truc bizarre, au lieu de mettre toutes les lignes dans 1 tableau ça créer 1 tableau par lignes:
function get_ean() { if ( defined('CBXPHPSPREADSHEET_PLUGIN_NAME') && file_exists( CBXPHPSPREADSHEET_ROOT_PATH . 'lib/vendor/autoload.php' ) ) { //Include PHPExcel require_once( CBXPHPSPREADSHEET_ROOT_PATH . 'lib/vendor/autoload.php' ); //now take instance 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', // The worksheet range that we want to retrieve NULL, // Value that should be returned for empty cells TRUE, // Should formulas be calculated (the equivalent of getCalculatedValue() for each cell) TRUE, // Should values be formatted (the equivalent of getFormattedValue() for each cell) TRUE // Should the array be indexed by cell row and cell column ); }catch(Exception $e) { die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage()); } return $dataArray; } }
Ah et au passage, j'ai pas trouver la syntaxe pour dire de prendre la colonne entière a partir de C2.
J'ai essayer des trucs au pif vu que je trouver pas dans la doc genre "C2:C*/C+/C++/++" mais sans succès ^^
En tout cas c'est vrais qu'on y vois plus clair et que ça fait plus classe surtout que je me suis bien fait ch** a passer mon site en php7, au moins ça aura servis.
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
>
hypo
Modifié le 4 oct. 2019 à 18:49
Modifié le 4 oct. 2019 à 18:49
Si tu regardes bien la doc du lien que je t'ai donné... tu y trouveras des lignes comme
Donc... avec ça.. tu peux savoir comment définir la dernière de ta colonne...
Un truc du genre
Et si tu lis les commentaires qui se trouvent dans le code
Tu devrais trouver comment retourner UN array comme tu le souhaites...
Bref... suffit de lire :-)
// Get the highest row and column numbers referenced in the worksheet $highestRow = $worksheet->getHighestRow(); // e.g. 10 $highestColumn = $worksheet->getHighestColumn(); // e.g 'F'
Donc... avec ça.. tu peux savoir comment définir la dernière de ta colonne...
Un truc du genre
$worksheet = $spreadsheet->getActiveSheet(); $highestRow = $worksheet->getHighestRow(); $dataArray = $spreadsheet->getActiveSheet() ->rangeToArray( 'C2:C'.$highestRow, // The worksheet range that we want to retrieve NULL, // Value that should be returned for empty cells TRUE, // Should formulas be calculated (the equivalent of getCalculatedValue() for each cell) TRUE, // Should values be formatted (the equivalent of getFormattedValue() for each cell) TRUE // Should the array be indexed by cell row and cell column );
Et si tu lis les commentaires qui se trouvent dans le code
TRUE // Should the array be indexed by cell row and cell column
Tu devrais trouver comment retourner UN array comme tu le souhaites...
Bref... suffit de lire :-)
Ah ouais mais là j'avoue jsuis largué, dans google trad ça m'a donné "Le tableau doit-il être indexé par ligne de cellule et colonne de cellule" ce a quoi j'ai bien évidement répondu "kamoulox !". Et pour highest row, là j'était persuadé que ça renvoyé la première ligne non nulle, donc, faut surtout que j’arrête d'interprété, visiblement j'ai pas la bonne logique x).
Nickel pour le highestRow !
Faut juste pensé a déclarer la feuille avant
En revanche ça change rien au résultat de mettre NULL ou FALSE a "Should the array be indexed by cell row and cell column", je me demande si c'est pas un paramètre qui sert que quand on appel plusieurs colonnes. Je vais déjà voir si je peut pas simplement exploiter le résultat tel-quel. En tout cas merci !
Faut juste pensé a déclarer la feuille avant
$worksheet = $spreadsheet->getActiveSheet(); $highestRow = $worksheet->getHighestRow(); $dataArray = $worksheet ->rangeToArray( 'C2:C'.$highestRow, // The worksheet range that we want to retrieve NULL, // Value that should be returned for empty cells TRUE, // Should formulas be calculated (the equivalent of getCalculatedValue() for each cell) TRUE, // Should values be formatted (the equivalent of getFormattedValue() for each cell) NULL // Should the array be indexed by cell row and cell column ); return $dataArray;
En revanche ça change rien au résultat de mettre NULL ou FALSE a "Should the array be indexed by cell row and cell column", je me demande si c'est pas un paramètre qui sert que quand on appel plusieurs colonnes. Je vais déjà voir si je peut pas simplement exploiter le résultat tel-quel. En tout cas merci !
yg_be
Messages postés
23392
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 décembre 2024
1 556
5 oct. 2019 à 11:44
5 oct. 2019 à 11:44
je pense que le dernier paramètre permet de décider si on utilise les numéros de ligne et les numéros de colonne comme index, ou si les index commencent simplement à 1. dans tous les cas, la réponse sera un tableau de tableaux, ce qui ne devrait pas de poser de problème.
Salut,
Me revoilà :p
Donc après avoir mis en place tout ça voilà ce qui arrive tout le temps:
En bref:
on part de mémoire utilisée: 58754640
et on block toujour au même nombre de requettes avec la mémoire à 59470640
J'ai tenté d'augmenté la mémoire avec ini_set('memory_limit','128M'); mais sans succès. Comment fait-on pour libérer de la mémoire la requete qui a été correctement traiter ? J'ai essayé pas mal de trucs mais quand je tape "memory" sur php.net je ne trouve rien dans ce sens.
Vous avez des idées ?
Me revoilà :p
Donc après avoir mis en place tout ça voilà ce qui arrive tout le temps:
logs: 9782950460103 traité avec un stock de: 11! Nombre de produits réstant a traiter: 2907 mémoire: 58754640 9782813808240 traité avec un stock de: 8! Nombre de produits réstant a traiter: 2906 mémoire: 58847168 9782956325635 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2905 mémoire: 58832656 3700126703829 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2904 mémoire: 58832656 3700126717925 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2903 mémoire: 58879424 3700126705588 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2902 mémoire: 58856544 3700126707490 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2901 mémoire: 58856544 3700126717420 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2900 mémoire: 58856544 3700126707469 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2899 mémoire: 58856544 3700126705618 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2898 mémoire: 58856544 3700126707520 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2897 mémoire: 58856544 3700126707544 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2896 mémoire: 58856544 3700126708435 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2895 mémoire: 58903344 3700126708961 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2894 mémoire: 58880464 3700126708978 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2893 mémoire: 58880464 3700126709081 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2892 mémoire: 58880464 3700126710575 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2891 mémoire: 58880464 3700126718113 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2890 mémoire: 58880464 3700126710049 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2889 mémoire: 58880464 3700126710056 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2888 mémoire: 58880464 3700126710124 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2887 mémoire: 58880464 3700126710650 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2886 mémoire: 58880464 3700126746284 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2885 mémoire: 58880464 3700126718168 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2884 mémoire: 58880464 3700126718243 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2883 mémoire: 58880464 3700126716010 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2882 mémoire: 58880464 3700126716041 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2881 mémoire: 58880464 3700126746789 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2880 mémoire: 58927216 3700126705014 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2879 mémoire: 58951392 3700126711633 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2878 mémoire: 58975248 3100000005986 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2877 mémoire: 58952368 4250888109029 traité avec un stock de: 1! Nombre de produits réstant a traiter: 2876 mémoire: 58952368 X000KITGTV traité avec un stock de: 4! Nombre de produits réstant a traiter: 2875 mémoire: 58952368 1298560 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2874 mémoire: 58952368 3700126704918 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2873 mémoire: 58952368 3100000005993 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2872 mémoire: 58952368 X000XLEWSZ traité avec un stock de: 2! Nombre de produits réstant a traiter: 2871 mémoire: 58952368 3329680151602 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2870 mémoire: 58952368 3329681144634 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2869 mémoire: 58952368 3329689495622 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2868 mémoire: 58952368 3329681133232 traité avec un stock de: 12! Nombre de produits réstant a traiter: 2867 mémoire: 58952368 3130630138068 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2866 mémoire: 58952368 3130632044206 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2865 mémoire: 58952368 3130630580676 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2864 mémoire: 58952368 3427140344837 traité avec un stock de: 15! Nombre de produits réstant a traiter: 2863 mémoire: 58952368 3100000005498 traité avec un stock de: 21! Nombre de produits réstant a traiter: 2862 mémoire: 58952368 3100000005481 traité avec un stock de: 27! Nombre de produits réstant a traiter: 2861 mémoire: 58952368 3661362134863 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2860 mémoire: 58952368 4016795360447 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2859 mémoire: 58952368 5414307091336 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2858 mémoire: 58952368 3700761402385 traité avec un stock de: 36! Nombre de produits réstant a traiter: 2857 mémoire: 58952368 3553231594024 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2856 mémoire: 58952368 3020122350200 traité avec un stock de: 23! Nombre de produits réstant a traiter: 2855 mémoire: 58952368 3329680472103 traité avec un stock de: 29! Nombre de produits réstant a traiter: 2854 mémoire: 58952368 3329680173109 traité avec un stock de: 30! Nombre de produits réstant a traiter: 2853 mémoire: 58952368 3329680175103 traité avec un stock de: 13! Nombre de produits réstant a traiter: 2852 mémoire: 58983208 3560239382751 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2851 mémoire: 58968696 3250650066520 traité avec un stock de: 5! Nombre de produits réstant a traiter: 2850 mémoire: 58968696 3086120017248 traité avec un stock de: 9! Nombre de produits réstant a traiter: 2849 mémoire: 59001208 3100000005856 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2848 mémoire: 58986168 3250650219841 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2847 mémoire: 58986168 3553231128496 traité avec un stock de: 21! Nombre de produits réstant a traiter: 2846 mémoire: 58986168 3660942000246 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2845 mémoire: 59019520 3660942060370 traité avec un stock de: 24! Nombre de produits réstant a traiter: 2844 mémoire: 59036888 3660942016186 traité avec un stock de: 11! Nombre de produits réstant a traiter: 2843 mémoire: 59054704 3154143244054 traité avec un stock de: 30! Nombre de produits réstant a traiter: 2842 mémoire: 59040192 3154144402101 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2841 mémoire: 59040192 5014702026478 traité avec un stock de: 18! Nombre de produits réstant a traiter: 2840 mémoire: 59040192 3086123329263 traité avec un stock de: 11! Nombre de produits réstant a traiter: 2839 mémoire: 59040192 3100000005627 traité avec un stock de: 180! Nombre de produits réstant a traiter: 2838 mémoire: 59040192 3037921820094 traité avec un stock de: 15! Nombre de produits réstant a traiter: 2837 mémoire: 59040192 3037920182001 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2836 mémoire: 59040192 3037920122007 traité avec un stock de: 19! Nombre de produits réstant a traiter: 2835 mémoire: 59040192 3037920132006 traité avec un stock de: 17! Nombre de produits réstant a traiter: 2834 mémoire: 59040192 3037920162003 traité avec un stock de: 21! Nombre de produits réstant a traiter: 2833 mémoire: 59040192 3437016000200 traité avec un stock de: 24! Nombre de produits réstant a traiter: 2832 mémoire: 59040192 3329683031611 traité avec un stock de: 26! Nombre de produits réstant a traiter: 2831 mémoire: 59040192 3592930012514 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2830 mémoire: 59040192 1133296811515 traité avec un stock de: 24! Nombre de produits réstant a traiter: 2829 mémoire: 59040192 8852641522562 traité avec un stock de: 14! Nombre de produits réstant a traiter: 2828 mémoire: 59040192 3329681154138 traité avec un stock de: 96! Nombre de produits réstant a traiter: 2827 mémoire: 59040192 3329680185706 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2826 mémoire: 59040192 3255460193893 traité avec un stock de: 8! Nombre de produits réstant a traiter: 2825 mémoire: 59040192 3329680147117 traité avec un stock de: 9! Nombre de produits réstant a traiter: 2824 mémoire: 59040192 3329680471106 traité avec un stock de: 12! Nombre de produits réstant a traiter: 2823 mémoire: 59071016 3503167140000 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2822 mémoire: 59056504 3154142441201 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2821 mémoire: 59088984 3130630851004 traité avec un stock de: 24! Nombre de produits réstant a traiter: 2820 mémoire: 59073944 3130630085409 traité avec un stock de: 27! Nombre de produits réstant a traiter: 2819 mémoire: 59073944 3086123154766 traité avec un stock de: 69! Nombre de produits réstant a traiter: 2818 mémoire: 59073944 3086123154506 traité avec un stock de: 63! Nombre de produits réstant a traiter: 2817 mémoire: 59073944 8000825654404 traité avec un stock de: 10! Nombre de produits réstant a traiter: 2816 mémoire: 59073944 3086123466012 traité avec un stock de: 9! Nombre de produits réstant a traiter: 2815 mémoire: 59105568 3760032831894 traité avec un stock de: 171! Nombre de produits réstant a traiter: 2814 mémoire: 59091056 3503167210000 traité avec un stock de: 5! Nombre de produits réstant a traiter: 2813 mémoire: 59091056 3154141961014 traité avec un stock de: 12! Nombre de produits réstant a traiter: 2812 mémoire: 59091056 3329683033622 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2811 mémoire: 59091056 3503167190005 traité avec un stock de: 99! Nombre de produits réstant a traiter: 2810 mémoire: 59091056 9781439744475 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2809 mémoire: 59091056 9781439744536 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2808 mémoire: 59091056 9781439735640 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2807 mémoire: 59091056 3329680961775 traité avec un stock de: 8! Nombre de produits réstant a traiter: 2806 mémoire: 59091056 3561865703095 traité avec un stock de: 12! Nombre de produits réstant a traiter: 2805 mémoire: 59091056 3501179531847 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2804 mémoire: 59091056 7638900202410 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2803 mémoire: 59091056 4008496810321 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2802 mémoire: 59091056 4902505163180 traité avec un stock de: 32! Nombre de produits réstant a traiter: 2801 mémoire: 59123872 3329680142044 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2800 mémoire: 59108832 3134375231626 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2799 mémoire: 59108832 8858741700947 traité avec un stock de: 27! Nombre de produits réstant a traiter: 2798 mémoire: 59108832 3020123872046 traité avec un stock de: 12! Nombre de produits réstant a traiter: 2797 mémoire: 59108832 3134375261418 traité avec un stock de: 108! Nombre de produits réstant a traiter: 2796 mémoire: 59141600 3329681151595 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2795 mémoire: 59126560 3329681151540 traité avec un stock de: 13! Nombre de produits réstant a traiter: 2794 mémoire: 59126560 3661075177119 traité avec un stock de: 15! Nombre de produits réstant a traiter: 2793 mémoire: 59126560 3086123395787 traité avec un stock de: 27! Nombre de produits réstant a traiter: 2792 mémoire: 59126560 3219918252136 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2791 mémoire: 59126560 3700460840822 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2790 mémoire: 59126560 3700460839635 traité avec un stock de: 36! Nombre de produits réstant a traiter: 2789 mémoire: 59126560 3219918252259 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2788 mémoire: 59126560 4902505085420 traité avec un stock de: 30! Nombre de produits réstant a traiter: 2787 mémoire: 59157608 3026980258955 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2786 mémoire: 59174912 3026980255930 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2785 mémoire: 59160400 3219912634488 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2784 mémoire: 59160400 3700460840662 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2783 mémoire: 59160400 3561864230899 traité avec un stock de: 21! Nombre de produits réstant a traiter: 2782 mémoire: 59160400 3700031730583 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2781 mémoire: 59160400 3561864220463 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2780 mémoire: 59160400 74427848477 traité avec un stock de: 9! Nombre de produits réstant a traiter: 2779 mémoire: 59160400 3130633406416 traité avec un stock de: 18! Nombre de produits réstant a traiter: 2778 mémoire: 59160400 3270220060970 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2777 mémoire: 59160400 3086124000154 traité avec un stock de: 8! Nombre de produits réstant a traiter: 2776 mémoire: 59192024 3270220003496 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2775 mémoire: 59177512 3270220076421 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2774 mémoire: 59177512 3250650064595 traité avec un stock de: 16! Nombre de produits réstant a traiter: 2773 mémoire: 59177512 3437012200000 traité avec un stock de: 9! Nombre de produits réstant a traiter: 2772 mémoire: 59177512 3288588070012 traité avec un stock de: 16! Nombre de produits réstant a traiter: 2771 mémoire: 59208336 3660173189581 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2770 mémoire: 59193824 3660173177168 traité avec un stock de: 9! Nombre de produits réstant a traiter: 2769 mémoire: 59193824 5010065030077 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2768 mémoire: 59193824 3250650005178 traité avec un stock de: 15! Nombre de produits réstant a traiter: 2767 mémoire: 59193824 3553231119135 traité avec un stock de: 11! Nombre de produits réstant a traiter: 2766 mémoire: 59193824 3329680147926 traité avec un stock de: 9! Nombre de produits réstant a traiter: 2765 mémoire: 59226208 3329680117912 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2764 mémoire: 59242584 3154143241060 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2763 mémoire: 59258656 3329680447118 traité avec un stock de: 12! Nombre de produits réstant a traiter: 2762 mémoire: 59244144 3154143241053 traité avec un stock de: 83! Nombre de produits réstant a traiter: 2761 mémoire: 59244144 3437014994068 traité avec un stock de: 24! Nombre de produits réstant a traiter: 2760 mémoire: 59244144 3086123449251 traité avec un stock de: 9! Nombre de produits réstant a traiter: 2759 mémoire: 59244144 3270220002758 traité avec un stock de: 4! Nombre de produits réstant a traiter: 2758 mémoire: 59244144 3416790022325 traité avec un stock de: 27! Nombre de produits réstant a traiter: 2757 mémoire: 59244144 3037921400005 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2756 mémoire: 59244144 3037920202006 traité avec un stock de: 15! Nombre de produits réstant a traiter: 2755 mémoire: 59275224 3370441963996 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2754 mémoire: 59260712 3020123661060 traité avec un stock de: 9! Nombre de produits réstant a traiter: 2753 mémoire: 59260712 5709750004386 traité avec un stock de: 15! Nombre de produits réstant a traiter: 2752 mémoire: 59260712 3553231111214 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2751 mémoire: 59260712 3103220009260 traité avec un stock de: 124! Nombre de produits réstant a traiter: 2750 mémoire: 59260712 3103220027363 traité avec un stock de: 48! Nombre de produits réstant a traiter: 2749 mémoire: 59260712 3700299931999 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2748 mémoire: 59260712 3661075132453 traité avec un stock de: 12! Nombre de produits réstant a traiter: 2747 mémoire: 59260712 3329680374209 traité avec un stock de: 13! Nombre de produits réstant a traiter: 2746 mémoire: 59293384 3329680633627 traité avec un stock de: 21! Nombre de produits réstant a traiter: 2745 mémoire: 59311016 3329682031612 traité avec un stock de: 33! Nombre de produits réstant a traiter: 2744 mémoire: 59295976 3329682037416 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2743 mémoire: 59384656 3329682033623 traité avec un stock de: 51! Nombre de produits réstant a traiter: 2742 mémoire: 59384848 3020120000497 traité avec un stock de: 33! Nombre de produits réstant a traiter: 2741 mémoire: 59384848 4960999789361 traité avec un stock de: 8! Nombre de produits réstant a traiter: 2740 mémoire: 59384848 3660942002509 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2739 mémoire: 59384848 3660942007368 traité avec un stock de: 18! Nombre de produits réstant a traiter: 2738 mémoire: 59384848 3329680967708 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2737 mémoire: 59418224 8717794816480 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2736 mémoire: 59403184 3169208432017 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2735 mémoire: 59403184 3553231751199 traité avec un stock de: 300! Nombre de produits réstant a traiter: 2734 mémoire: 59403184 3154144992107 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2733 mémoire: 59403184 3329680687217 traité avec un stock de: 8! Nombre de produits réstant a traiter: 2732 mémoire: 59434296 3130630511991 traité avec un stock de: 42! Nombre de produits réstant a traiter: 2731 mémoire: 59451120 3130630516996 traité avec un stock de: 19! Nombre de produits réstant a traiter: 2730 mémoire: 59436608 3270220060963 traité avec un stock de: 11! Nombre de produits réstant a traiter: 2729 mémoire: 59436608 3086123343153 traité avec un stock de: 14! Nombre de produits réstant a traiter: 2728 mémoire: 59436608 5010065074071 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2727 mémoire: 59436608 8411782431920 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2726 mémoire: 59436608 3086124000352 traité avec un stock de: 51! Nombre de produits réstant a traiter: 2725 mémoire: 59436608 3086124000482 traité avec un stock de: 15! Nombre de produits réstant a traiter: 2724 mémoire: 59436608 4006381124447 traité avec un stock de: 17! Nombre de produits réstant a traiter: 2723 mémoire: 59436608 3660173185033 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2722 mémoire: 59436608 3250650066551 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2721 mémoire: 59436608 4006333054136 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2720 mémoire: 59436608 3660942004619 traité avec un stock de: 9! Nombre de produits réstant a traiter: 2719 mémoire: 59436608 3045058206230 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2718 mémoire: 59436608 7638900248333 traité avec un stock de: 12! Nombre de produits réstant a traiter: 2717 mémoire: 59436608 8711717004138 traité avec un stock de: 36! Nombre de produits réstant a traiter: 2716 mémoire: 59436608 8711717004183 traité avec un stock de: 35! Nombre de produits réstant a traiter: 2715 mémoire: 59436608 3660942004640 traité avec un stock de: 24! Nombre de produits réstant a traiter: 2714 mémoire: 59436608 3266790236891 traité avec un stock de: 12! Nombre de produits réstant a traiter: 2713 mémoire: 59436608 3130630056102 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2712 mémoire: 59436608 4005401250128 traité avec un stock de: 9! Nombre de produits réstant a traiter: 2711 mémoire: 59436608 3130630132875 traité avec un stock de: 36! Nombre de produits réstant a traiter: 2710 mémoire: 59436608 3130630132790 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2709 mémoire: 59436608 3086129998975 traité avec un stock de: 13! Nombre de produits réstant a traiter: 2708 mémoire: 59436608 4902505134654 traité avec un stock de: 62! Nombre de produits réstant a traiter: 2707 mémoire: 59467656 71662150556 traité avec un stock de: 9! Nombre de produits réstant a traiter: 2706 mémoire: 59453144 3270220093350 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2705 mémoire: 59453144 3020122360209 traité avec un stock de: 24! Nombre de produits réstant a traiter: 2704 mémoire: 59453144 3020122370000 traité avec un stock de: 14! Nombre de produits réstant a traiter: 2703 mémoire: 59453144 8008285096109 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2702 mémoire: 59453144 5014702026393 traité avec un stock de: 21! Nombre de produits réstant a traiter: 2701 mémoire: 59453144 3013648074866 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2700 mémoire: 59453144 5412479019813 traité avec un stock de: 26! Nombre de produits réstant a traiter: 2699 mémoire: 59453144 3553231128502 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2698 mémoire: 59453144 3130630000419 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2697 mémoire: 59453144 3130630131601 traité avec un stock de: 21! Nombre de produits réstant a traiter: 2696 mémoire: 59453144 3503167200001 traité avec un stock de: 16! Nombre de produits réstant a traiter: 2695 mémoire: 59453144 3154140393007 traité avec un stock de: 2! Nombre de produits réstant a traiter: 2694 mémoire: 59453144 4007817310748 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2693 mémoire: 59453144 3467452040133 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2692 mémoire: 59453144 3154143252059 traité avec un stock de: 18! Nombre de produits réstant a traiter: 2691 mémoire: 59453144 3154141194108 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2690 mémoire: 59453144 3154145347548 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2689 mémoire: 59453144 3154147313107 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2688 mémoire: 59453144 3086129999699 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2687 mémoire: 59453144 4902505342080 traité avec un stock de: 58! Nombre de produits réstant a traiter: 2686 mémoire: 59485152 3086129998951 traité avec un stock de: 24! Nombre de produits réstant a traiter: 2685 mémoire: 59470640 4046719287598 traité avec un stock de: 6! Nombre de produits réstant a traiter: 2684 mémoire: 59470640 4008496677986 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2683 mémoire: 59470640 3700126712166 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2682 mémoire: 59470640 50375301 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2681 mémoire: 59470640 3020123277148 traité avec un stock de: 24! Nombre de produits réstant a traiter: 2680 mémoire: 59470640 5010065984349 traité avec un stock de: 12! Nombre de produits réstant a traiter: 2679 mémoire: 59470640 3279392708918 traité avec un stock de: 3! Nombre de produits réstant a traiter: 2678 mémoire: 59470640
En bref:
on part de mémoire utilisée: 58754640
et on block toujour au même nombre de requettes avec la mémoire à 59470640
J'ai tenté d'augmenté la mémoire avec ini_set('memory_limit','128M'); mais sans succès. Comment fait-on pour libérer de la mémoire la requete qui a été correctement traiter ? J'ai essayé pas mal de trucs mais quand je tape "memory" sur php.net je ne trouve rien dans ce sens.
Vous avez des idées ?
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
6 oct. 2019 à 17:56
6 oct. 2019 à 17:56
Je suppose que ce que tu nous montres ne se trouve pas dans la fonction de récupération des EAN mais dans ton autre fonction eandata ...
Comme on ne sait pas ce qu'elle contient.. il nous sera difficile de te répondre.
Mais vu le commentaires que tu as placé dans ta première question concernant cette fonction.. je pense qu'il faut revoir quelque peu sa "logique".
Perso... Je stockerai les différentes données dans une base de données au lieu de bosser directement sur les fichiers excel
Il sera alors très facile de récupérer les informations voulues via des requêtes SQL et quelques jointures...
Tu peux aussi réduire le nombre d'EAN à traiter à chaque fois vu que désormais tu as le code nécessaire pour choisir la "plage" de cellules à lire.
Comme on ne sait pas ce qu'elle contient.. il nous sera difficile de te répondre.
Mais vu le commentaires que tu as placé dans ta première question concernant cette fonction.. je pense qu'il faut revoir quelque peu sa "logique".
Perso... Je stockerai les différentes données dans une base de données au lieu de bosser directement sur les fichiers excel
Il sera alors très facile de récupérer les informations voulues via des requêtes SQL et quelques jointures...
Tu peux aussi réduire le nombre d'EAN à traiter à chaque fois vu que désormais tu as le code nécessaire pour choisir la "plage" de cellules à lire.
yg_be
Messages postés
23392
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 décembre 2024
1 556
6 oct. 2019 à 20:17
6 oct. 2019 à 20:17
qu'est ce qui déclenche l'exécution de ton script? si tu veux le couper en morceaux, il faudra appeler chacun de ces morceaux.
la mémoire n'augmente presque pas, pourquoi penses-tu que c'est la cause de l’arrêt du script? tu pourrais ajouter des pauses pour vérifier que ce n'est pas le temps écoulé qui pose problème.
combien de temps s'écoule-t'il approximativement avant qu'il soit interrompu?
la mémoire n'augmente presque pas, pourquoi penses-tu que c'est la cause de l’arrêt du script? tu pourrais ajouter des pauses pour vérifier que ce n'est pas le temps écoulé qui pose problème.
combien de temps s'écoule-t'il approximativement avant qu'il soit interrompu?
4 oct. 2019 à 13:27
Donc oui quand je dit la ligne au dessus je parle de $exceltab et vu qu'elle inclus la fonction "traitement", implicitement il s'agit de tout les ligne du code ^^, "leur serveur" escuse moi c'est une faute de frappe c'est "le server" en l'occurence un VPS ovh.
la fonction get_ ean retourne un array() avec les eans
la fonction eandata traite 1 ean pour le transformé en fiche produit
la fonction traitement envoie les eans 1 par 1 dans eandata
Mais plus simplement ce que je voudrais c'est rajouter une fonction qui viendrait créer on va dire des étape de 50 traitements du genre:
1 je compte les ligne du tableau
2 je compte le nombre de paquets de 50 a traiter
3 j'envoie 1 paquet de 50 dans traitement et retourne une valeur pour alimenter une barre de progression
... dans ce gout là.
Mais en réaliter je ne sais pas si ca changerais quoique ce soit, c'est plus une question ouverte sur comment décomposer un gros traitement en pleins de petits, si ya des exemples de codes (j'en ai pas trouver c'est pour ça que je suis la ^^)
Merci en tout cas.
4 oct. 2019 à 13:47
4 oct. 2019 à 13:47
4 oct. 2019 à 14:13
il renvois