Turiu keletą klientų pardavimo vietų (POS) sistemų, kurios periodiškai siunčia naujus pardavimų duomenis į vieną centralizuotą duomenų bazę, kurioje duomenys saugomi vienoje didelėje duomenų bazėje ir naudojami ataskaitoms kurti.
Kliento POS yra pagrįsta PHPPOS, o aš įdiegiau modulį, kuris naudoja standartinę XML-RPC biblioteką pardavimų duomenims siųsti į paslaugą. Serverio sistema sukurta CodeIgniter pagrindu, o žiniatinklio paslaugos komponentui naudojamos XML-RPC ir XML-RPCS bibliotekos. Kai siunčiu daug pardavimo duomenų (tik 50 eilučių iš pardavimo lentelės ir atskiras eilutes iš sales_items, susijusias su kiekviena pardavimo preke), gaunu tokią klaidą:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 54 bytes)
128M yra numatytoji reikšmė php.ini
, bet aš manau, kad tai didžiulis skaičius, kurį galima pažeisti. Tiesą sakant, aš net bandžiau nustatyti šią reikšmę 1024M, ir viskas, ką tai daro, tai užtrunka ilgiau, kol atsiranda klaida.
Kalbant apie veiksmus, kurių ėmiausi, bandžiau išjungti visą serverio pusės apdorojimą ir įrengiau jį taip, kad jis grąžintų konservuotą atsakymą nepriklausomai nuo įvesties. Vis dėlto manau, kad problema slypi pačiame duomenų siuntime. Netgi bandžiau išjungti maksimalų PHP scenarijaus vykdymo laiką, bet klaidos vis tiek atsirado.