Folosesc ACF pentru multe lucruri în WP, iar una dintre problemele cele mai mari ar fi că administrarea câmpurilor poate deveni extrem de ușor aglomerată și foarte greu de administrat. Mă rog, pentru cei ce nu sunt familiari cu ACF este suficient de menționat că acesta exportă un array multidimensional destul de… generos:
În fine, acum ajung la problema care mă roade: pentru a trece de panoul de administrare (ăla stufos, mai sus menționat), am făcut câteva clase PHP care, într-un fel sau altul, scuipă cam același array. Nu folosesc cine știe ce logică complexă, abia am câteva condiții, câteva preg_match și preg_split cu niște pattern-uri foarte simple și multe array_merge. Practic la fiecare field am un array_merge.
În acest moment, la modul în care mă pricep eu să măsor, pe mașina de dev nu se observă nici o problemă cu performanța, dar nu e chiar cea mai bună modalitate de măsurare, având în vedere că am maximum un vizitator și doar dummy data în DB (deci foarte puține intrări)
Întrebarea mea este: ar trebui să-mi fac probleme pe viitor? Există posibilitatea ca lucrurile să o ia razna și să văd spike-uri dubioase?
Tocmai, că am făcut asta și nu am rezultate concludente. Dar sunt într-un punct în care nu am foarte multe date, nu am vizitatori iar array-ul încă este mic (estimez că e un sfert din cât că va fi în final).
Profiling în acest punct nu este foarte relevant și aș vrea ceva feedback de la cei mai experimentați, să pot aborda altfel situația dacă este cazul.
In opinia mea exemplul prezentat este destul de simplu, pare a fi mai mult o micro-optimizare, am vazut in Magento array-uri mult mai complexe care se iterau de cateva ori per request si response time-ul era sub 60 ms.
Eu cred in masuratori. M-au salvat de multe ori.
Totdeauna am incercat sa “pun in cap” masina de dev prima, macar sa stiu la ce sa ma astept. Nu de alta, dar in al 2lea meu an de vitejii eram 33 developeri care lucram remote pe un monstru de dev machine si l-am killerit cu ceva batch processing care pierdea memorie, si am stat toti pana am recuperat accesul.
Revenind, pentru lovirea nemiloasa intr-o masina de dev in mod deosebit recomand siege sau macar Apache benchmark, si evident monitorizarea in timp real la un nivel basic. La siege e super fain ca poti da o lista de url-uri pe care sa le crawluiasca si in felul asta poti vedea care din ele e buba. Dupa ce ai identificat o buba sau mai multe, recomand profiling cu blackfire pentru elucidarea misterului.
Putin off-topic (dar nu am timp sa detaliez): da, array-urile multidimensionale sunt un PITA dpdv al performantei.
Din păcate array-urile nu sunt chiar o opțiune. Sunt impuse de pluginul sufletului.
Eu îmi fac probleme de generarea array-ului, care se face făcea la fiecare pageload.
Între timp am scris un utilitar ce-mi scrie tot array-ul ăla într-un format asemănător cu export-ul. Acum orice probleme de performanță pică în cârca pluginului.
Ah, nu asta era problema. Problema ar fi că ce rezultă din json_decode tot array se numește.
Din codul meu trebuie să rezulte array-uri ca cel din exemplul de mai sus. Nu pot schimba, nu pot ajusta
Eu îmi făceam probleme pentru că am scris câteva clase care generează acele arrays live, deci pentru generarea lor îmi făceam griji (dar am rezolvat, cât sunt în dev mode scriu într-un fișier, când nu sunt în devmode, citesc doar acel fișier și sar peste clasele mele).