t r a c t $ c s v = n e w S p l F i l e O b j e c t ( $ f i l e n a m e ) ; $ c s v - > s e t F l a g s ( S p l F i l e O b j e c t : : R E A D _ C S V ) ; $ c s v - > s e t C s v C o n t r o l ( " ; " , ' " ' ) ; f o r e a c h ( $ c s v a s $ l i n e ) { $ e l e m e n t = $ l i n e - > f g e t c s v ( ) ; / / T r a n s f o r m $ r e s u l t = $ t r a n s f o r m e r - > t r a n s f o r m ( $ e l e m e n t ) ; / / L o a d $ l o a d e r - > l o a d ( $ r e s u l t ) ; }
x t r a c t $ c s v = n e w S p l F i l e O b j e c t ( $ f i l e n a m e ) ; $ c s v - > s e t F l a g s ( S p l F i l e O b j e c t : : R E A D _ C S V ) ; $ c s v - > s e t C s v C o n t r o l ( " ; " , ' " ' ) ; f o r e a c h ( $ c s v a s $ l i n e ) { $ e l e m e n t = $ l i n e - > f g e t c s v ( ) ; / / T r a n s f o r m $ r e s u l t = $ t r a n s f o r m e r - > t r a n s f o r m ( $ e l e m e n t ) ; / / L o a d $ l o a d e r - > l o a d ( $ r e s u l t ) ; }
queue, le job suivant va lire la queue. Chaque itération est très petite, plus de problème de memory limit ! Et on peut lancer plusieurs workers... scalable !
c e i d = " j o b . t y p e . h o n e y _ t r a n s f o r m e r " c l a s s = " V l r \ H i v e B u n d l e \ J o b \ T y p e \ H o n e y < t a g n a m e = " j o b . t y p e " a l i a s = " h o n e y _ t r a n s f o r m e r " > < / t a g > < / s e r v i c e >