Jump to content
php.lv forumi

Paralēla piekļuve.


entu

Recommended Posts

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by codez
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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ēļ.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...