entu Posted August 17, 2011 Report Share Posted August 17, 2011 Sveiki. Situācija tāda. Ar vienu rekvestu tiek izsaukts PHP kods, kurš var ilgst ilgāku laiku (piemēram minūte vai 10 minutes) un vislaiku atgriež padarītā darba procentus. Vēlme ir no cita rekvesta skatīties cik patreiz procentu darba ir padarīts. Problēma rodas tā, ka nevaru izdomāt, kāds būtu visekonomiskākais veids. Rakstot procentus sesijā ar tādu pašu session_id nesanāk. Vēl varētu rakstīt uz faila procentus un tad paralēli lasīt, kas tur sarakstīts, bet tas manuprāt arī diezgan noslogo serveri, jo tās darbības var būt vairāki tūkstoši. Jūsu idejas? Paldies. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted August 17, 2011 Report Share Posted August 17, 2011 Kāpēc ar sesijām nesanāk? Quote Link to comment Share on other sites More sharing options...
entu Posted August 17, 2011 Author Report Share Posted August 17, 2011 Rezultāts tiek pieejams tikai tad, kad process beidzies un atdod 100%. Kamēr nav beidzies, lapa vislaiku lādējas. Quote Link to comment Share on other sites More sharing options...
mad182 Posted August 17, 2011 Report Share Posted August 17, 2011 Kāpēc ar sesijām nesanāk? Tāpēc, ka sesija tiek ierakstīta datu nesējā skripta izpildes beigās. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted August 17, 2011 Report Share Posted August 17, 2011 Skaidrs... kādam ir kādi varianti? Quote Link to comment Share on other sites More sharing options...
mad182 Posted August 17, 2011 Report Share Posted August 17, 2011 Rakstīšana failā pati par sevi neko daudz nenoēdīs, ja vien netaisies to darīt 1000 rezes sekundē... Tā doma, ka sesijas būtu ātrākas vispār ir neloģiska, pat ja viņas strādātu tā, kā iedomājies, jo defaultais sesiju handleris tā pat datus glabā failā uz diska. Vēl jau var rakstīt memcached vai kādā citā kešosanas dzinī, bet diez vai no tā ir jēga. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted August 17, 2011 Report Share Posted August 17, 2011 Es jau neteicu, ka ar sesijām būtu ātrāk. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted August 17, 2011 Report Share Posted August 17, 2011 Kaa jau mad182 teica - glabaa vai nu: failaa DB (teoreetiski tas pats fails ir...tik struktureetaaks) caching dzineejaa (nav veerts uzstaadiit tikai taadeelj lai sho dariitu) Quote Link to comment Share on other sites More sharing options...
Maris-S Posted August 17, 2011 Report Share Posted August 17, 2011 Tā īsti laikam nesapratu ko tieši Tu vēlies panākt, jo nezinu ne kas notiek tanī ilglaicīgajā skriptā, ne arī no kurienes viņš tiek palaists, bet ja tur ir kāds liels cikls, kurš teorētiski katrā solī varētu atgriezt procentus, tad iespējams vari mēģināt izvadīt to rezultātu arī cikla izpildes laikā, izmantojot Output Control Functions. Bet kā jau teicu, neesmu pat pārliecināts ka tā sanāks vispār sataisīt un arī jāskatās vai skripta izpildāmais uzdevums vispār ļaus vismaz mēģināt izmantot tādu pieeju. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted August 17, 2011 Report Share Posted August 17, 2011 +1, Maris-S. Par to es neiedomājos. Quote Link to comment Share on other sites More sharing options...
codez Posted August 17, 2011 Report Share Posted August 17, 2011 (edited) Ja pirmais izsauktais request kods tiek izsaukt no browsera, tad vari mēģināt šo izsaukt ar slēptu ifreimu un requestā <script> tagos atgriezt funkciju, kura atjauno procentu rādītāju browserī: <script>refreshPercentage(5);</script> Tādā veidā iztiksi ar vienu requestu. EDIT: ah, Maris jau ierakstīja. Edited August 17, 2011 by codez Quote Link to comment Share on other sites More sharing options...
entu Posted August 17, 2011 Author Report Share Posted August 17, 2011 Jap, izvadot, labi noderēja flush, ob_flush. Tākā rekvests tika veikts caur XMLHttpRequest, tad arī turpat ciklā, izmantotjot .responseText, varēja visu labi apstrādāt. Paldies par idejām. Quote Link to comment Share on other sites More sharing options...
entu Posted August 17, 2011 Author Report Share Posted August 17, 2011 Nu jā protams. Uzliekot uz mākoņservera flush atsakās strādāt. Viskautko palasīju par to, bet neizdevās iedarbināt. Vēl iedomājos, ka varētu traucēt pagespeed, to ar atslēdzu caur htaccess, bet nekas. Pie servera konfigurācijam nevar tikt klāt. Ir kādam kāds padoms? Thanks. Quote Link to comment Share on other sites More sharing options...
briedis Posted August 17, 2011 Report Share Posted August 17, 2011 Nesaprotu, kur ir problēma periodiski ierakstīt failā vai db to procesa stāvokli? Tas taču nav jādara ik pa 1% (vai 1 iterācijai), bet gan ik pa 100 kaut vai. $log_stat = 0; while(true){ //Batch process $log_stat++; if($log_stat > 100){ //šeit ierakstam db to stāvokli $log_stat = 0; } } Ar buferiem tas nav tik vienkārši, un var sanākt neprognozējamas lietas tīri nezināšanas dēļ. Quote Link to comment Share on other sites More sharing options...
entu Posted August 17, 2011 Author Report Share Posted August 17, 2011 Tā jau vien būs jādara, bet tomēr ar flush būtu bijis daudz ērtāk, jo jau vien izpildītos tikai viens rekvests. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.