ohmygod Posted December 11, 2006 Report Share Posted December 11, 2006 Ir tā, ka ir tiek palaists ljooti ilgs process uz php, taa progress tiek atteelots ar flashu (manupraat visvieglaakais un smukaakais veids, kaa to dariit). Bet ir probleema taada, ka ja neko neoutputo, tad to flashu nemaz neraada, liidz pat procesa beigaam. Ja outputoju uz katru kaadu noteiktu darbiibu kaut vai , tad peec laika paraadaas un straadaa OK. Var aruu outputot garaakus outputus, tad paraadaas aatraak. Kas ir tas, kas liek lapu ielaadeet? Kaa vareetu to izdariit ar vienu, neredzamu, outputu pirms process veel saacies? Lai pie 50K darbiibaam nav 50K _ jaasuuta laukā. Link to comment Share on other sites More sharing options...
hmnc Posted December 11, 2006 Report Share Posted December 11, 2006 pats iebrauci tekstā ko uzrakstīji?! Link to comment Share on other sites More sharing options...
ohmygod Posted December 11, 2006 Author Report Share Posted December 11, 2006 jep, sapratu gan. Un joprojam saprotu. Nenotiek lapas ielaade, ja php process nav beidzies vai arii nav daudz outputa. kaa lapu ielaadeet aatraak? Link to comment Share on other sites More sharing options...
andrisp Posted December 11, 2006 Report Share Posted December 11, 2006 (edited) Hmm.. man kaut kā likās, ka outputs browserim reāli tiks nosūtīts tikai tad, kad, kad skripts savu darbību būs pabeidzis. Varbūt tagad es sarežģīšu potenciāli vienkāršāk izdarāmu lietu, bet es būtu darījis šādi: 1) Izveido parastu html (kaut vai php, bet doma tāda, ka tas nesatur to tavu php kodu) failu. 2) Šajā failā iekļauj to flash animāciju. 3) Izveido atsevišķu php failu tām ilgajām darbībām. 4) No html faila ar javasctipt xmlhttprequest (xhr) objekta palīdzību izsauc to php skriptu. 5) Kad xmlhttprequest statuss ir 4 (php fails ir beidzis darbu un atgriezis kaut kādu outputu), tad izvāc to flash animāciju (ar JS DOM fjām). Bet šis variants būtu nedaudz tāds overkill priekš tik vienkāršas lietas :). Un vispār nezinu arī cik ilgi xhr objekts būs gatavs gaidīt atbildi no servera. PS. Kā arī, atkarībā no auditorijas, vajadzētu kaut kādu graceful degradation izveidot (http://en.wikipedia.org/wiki/Graceful_degradation). Priekš tiem, kam nav JS, vai arī neatbalsta xhr objektu. Edited December 11, 2006 by andrisp Link to comment Share on other sites More sharing options...
hmnc Posted December 11, 2006 Report Share Posted December 11, 2006 paātrināt php procesu. Link to comment Share on other sites More sharing options...
andrisp Posted December 11, 2006 Report Share Posted December 11, 2006 (edited) Vienkāršāka, bet līdzīga metode: 1) Izveido html failu ar redirektu (html meta redirektu) uz to ilgo php failu. 2) Šajā html failā ievieto to flash animāciju. Arī šajā variantā jāpēta kā browseri uzvedas, ja fails uz ko redirektē, ilgi neatbild. Edited December 11, 2006 by andrisp Link to comment Share on other sites More sharing options...
hmnc Posted December 11, 2006 Report Share Posted December 11, 2006 vispār pēc pieredzes - ja jātaisa kkādi hacki, workaroundi tad 95% gadījumos tas nozīmē, ka tehniskais risinājums līdz tam ir nepareizs. Link to comment Share on other sites More sharing options...
ohmygod Posted December 11, 2006 Author Report Share Posted December 11, 2006 (edited) Nu, man ir faili ar paari pa 50k ierakstu, kas ik pa laikam jaasaliidzina ar DB. Saliidzinaashanu palaizh manuaali. Iekš db ir jaasaliidzina ar 6 tabulaam + tabulas jaasaliidzina savaa starpaa. Katrs ieraksts. Process velkas ap stundu, bik vairaak. Viss ir maksimaali, iespeejami indekseets. Vajag redzeet progresu. Var jau, protams, vinju raadiit popupaa, bet tas nav iisti smuki. Edited December 11, 2006 by ohmygod Link to comment Share on other sites More sharing options...
hmnc Posted December 11, 2006 Report Share Posted December 11, 2006 STUNDU?! 50k ierakstu tici man nav daudz. daudz ir 2`000`000 ierakstu 10 tabulās.. pārbaudi algoritmus + db struktūru (struktūru nevis indexiem) + padomā par kešošanu Link to comment Share on other sites More sharing options...
ohmygod Posted December 11, 2006 Author Report Share Posted December 11, 2006 Tākš - bez mysq pārbaudes un inserta visam pasākumam iziet cauri nu ļoooti ātri. Ar katras darbības ielogošanu un XML (priekš flaša) veidošanu biš virs minūtes. Tiklīdz ir pliks inserts, bet jebkādām pārbaudēm - aptuveni 2x ātrāk, kā iepriekš (minūtes ~40 varētu būt, līdz galam nelaidu). Ar pārbaudēm jau iet pilnu laiku. Tātad bremze ir jau uz mysql queriju, kā tādu. Pat uz visparastāko insertu parastā tabulā ar id, name un vēl 4 parametriem, kas visi jau tiek iedoti gatavi. Link to comment Share on other sites More sharing options...
Delfins Posted December 11, 2006 Report Share Posted December 11, 2006 (edited) nafig tev kautr kas ir jārāda... Uztaisi batch job... ieliec iekš `queue`, un lai backgroundā vārās savā sulā... Tekošo statusu var ierakstīt kādā lock-failā. Un viss. Nevajag tenekādus progress-bar-us Edited December 11, 2006 by Delfins Link to comment Share on other sites More sharing options...
hmnc Posted December 11, 2006 Report Share Posted December 11, 2006 nu principā neviens tev palīdzēt nevarēs, kamēr nebūsi izstāstījis ko vēlies panākt ar to savu sistēmu un pēc kāda algoritma tas viss tagad strādā. man tas reāli izklausās pēc kreisas db struktūras + līkiem algoritmiem. tev tur gadījumā nav inserts uz fulltext indexiem?! :) Link to comment Share on other sites More sharing options...
Exzo Posted December 11, 2006 Report Share Posted December 11, 2006 mazliet offtopic Kā jau bieži vien šajā forumā gadās, diskusija no "kā" pāriet uz "kāpēc", bet ja precīzāk, tad uz "a nafig vajag". Protams bieži vien problēma ir tajā, ka cilvēks nespēj izklāstīt lielo/sarežģito domu rakstiski pāris teikumu postā, tapēc paskaidrojumu noreducē līdz pamatproblēmai, neiedziļinoties iemeslos. Un galu galā kāda starpība, cik tas liekas [ir]racionāli vienam vai otram, svarīgi ir tas, ka cilvēks ir ar to gatavs čakarēties līdz sliktai dūšai un tapēc šeit interesējas kā atrisināt konkrēto paša radīto problēmu kaut mazliet nesāpīgāk. Lai tik kāds mēģina man iestāstīt, ka nekad pats nav mēģinājis izveidot kaut ko nestandarta, lai arī tas būtu sarežģītāk, bet "glaunāk"... Daudzmaz mēģinājis atbildēt ir andrisp, pārējie kā jau parasti bīda demagoģiju... Link to comment Share on other sites More sharing options...
Delfins Posted December 11, 2006 Report Share Posted December 11, 2006 Exzo, vai tu arii pretosies "pieredzejusho zinaashanaam"? Taadus skriptus neviens nelaizh (protams, iznjemot dazhus "gudriishus") zem Apache procesa un turklat nekarina virsuu Flash progress-baru.... Maksimaalais ko te var atljauties ir: - batch skripts raksta failaa tekosho progresu - flash/ajax savaac no servera to failu un atteelo.... Uzreiz tiek atrisinaatas vairakas problemas: - gjemorojs ar izvadi (nav user interactiviti, protams, iznjemot kill -9 $proc_id :) ) - gjemorojs ar apache uzkarinashanu un iespejams nokrashoshanu - gjemorojs ar time/memory-limitiem Link to comment Share on other sites More sharing options...
hmnc Posted December 12, 2006 Report Share Posted December 12, 2006 tur jau tā fiška, ka php kods ir skripts nevis serviss vai vēl sazin kas - skripts izpildās no nultās līdz n-tajai rindiņai un viss. un defaultajos php settingos max runtaims ir 30sec, kas manuprāt ir jau diezgan daudz. galu galā webiskām lietām manuprāt uz servera ir jāizpildās krietni zem 1sec. ja izpildās stundu(!!!!) tad vajag domāt par lietām, ko jau es pieminēju agrāk. un par demagoģiju - tas ir aptuveni tā, ka ja viens cilvēks brauc ar mašīnu visu laiku pirmajā pārnesumā nepārslēdzot augstāku, tad pieredzējušākie parādīs, ka ir jāpārslēdz nākamais pārnesums, bet andrisp parādīs ka pirmais pārnesums nemaz nav slikts un vēl mācīs gāzēt vairāk :) (nekas personisks andrisp :) ) Link to comment Share on other sites More sharing options...
Recommended Posts