aaxc Posted June 13, 2012 Report Share Posted June 13, 2012 (edited) Sveiki, ir radusies maza problēma. Nesvarīgu iemeslu dēļ, ir nepieciešams izveidot weblapas veida svn update formu. Atradu šo linku ( http://www.php.net/m...en/book.svn.php ), bet uz Windows mašīnas īsti nestrādā ( ja jums ir izdevies, tad droši padalamies pieredzē ). Notestēju arī šo ( http://websvn.tigris.org/ ), bet tur nav iespējas svn update taisīt, kas manā gadījumā ir svarīgākais. Tātad sāku pats ar primitīviem shell_exec tasīt augšā: <?php define ( SVN_DIR, 'c:\\svn\\server_dir' ); function svn_exec ( $cmd ) { $output.= trim ( shell_exec( $cmd . ' ' . SVN_DIR ) ); return $output; } echo "<pre>"; echo svn_exec ( 'svn st' ); echo svn_exec ( 'svnversion' ); echo "</pre>"; ?> Tik tālu vis strādā smuki, bet kā ņemam ko "apjomīgāku", kā piemēram: echo svn_exec ( 'svn log' ); Tā lapa vienkārši nofrīzo, jeb mēģina bezgalīgi ilgi lādēties ( pat timeout neiestājas ). Jautājums elementārs, vai ir kāds ir ko tādu taisījis un ja jā, tad lūgums padalīties ar pieredzi un risinājumu. Jau iepriekš pateicos. Papildinfo: Uzgāju vēl šādu rakstu: 1. Man ir uzliktas Full control pravas uz viesiem folderiem un failiem ( tai skaitā hidden ). 2. Man ir viens svn clients ( Tortoise ) klikšķināšanai un paralēli shell komandām otrs ( Slik ). Bet tā kā Tortoise neatbalsta shell komandas, tad no šī viedokļ tikai viens klients. Edited June 13, 2012 by aaxc Quote Link to comment Share on other sites More sharing options...
marrtins Posted June 13, 2012 Report Share Posted June 13, 2012 Hmm, kāds ir time limits? Uzstādi uz 0 un tad paprovē. Quote Link to comment Share on other sites More sharing options...
aaxc Posted June 13, 2012 Author Report Share Posted June 13, 2012 Šajā gadījumā tas pilnibā nav svarīgi. Skaidrs zināms, ka tur vienkārši timeout iestāsies tik un tā. Shellā scripts izpildās instanti ( nu labi +- 50ms ), tāka problēma ir kur citur. Quote Link to comment Share on other sites More sharing options...
codez Posted June 13, 2012 Report Share Posted June 13, 2012 Visdrīzāk problēma ir tajā, ka uz izpildes laiku php tiek nobloķēts līdz tiek izpildīta komanda. Tā atrisināšanai var mēģināt: http://it.php.net/manual/en/function.popen.php Quote Link to comment Share on other sites More sharing options...
aaxc Posted June 13, 2012 Author Report Share Posted June 13, 2012 Visdrīzāk problēma ir tajā, ka uz izpildes laiku php tiek nobloķēts līdz tiek izpildīta komanda. Tā atrisināšanai var mēģināt: http://it.php.net/ma...ction.popen.php Notestēju, tieši tas pats. Vot nesaprotu, kāpēc es varu izpildīt principā visas komandas caur shell izņemot specifiskus svn pieprasiijumus... Quote Link to comment Share on other sites More sharing options...
aaxc Posted June 13, 2012 Author Report Share Posted June 13, 2012 Papildinfo: Uzgāju vēl šādu rakstu: 1. Man ir uzliktas Full control pravas uz viesiem folderiem un failiem ( tai skaitā hidden ). 2. Man ir viens svn clients ( Tortoise ) klikšķināšanai un paralēli shell komandām otrs ( Slik ). Bet tā kā Tortoise neatbalsta shell komandas, tad no šī viedokļ tikai viens klients. Quote Link to comment Share on other sites More sharing options...
draugz Posted June 13, 2012 Report Share Posted June 13, 2012 Varbūt ir vērs pamēģināt kādu city exec komandu? kaut vai exec vai system? Es gan nezinu kā ir uz windows, bet vēl varētu pamēģināt šitā exec('svn log > tmp_file'); Un pēc tam taisīt ajax pieprasījumus un pārbaudīt if(is_file('tmp_file')) {//super logs atnācis}else{//atkartojam ajaxu!} Quote Link to comment Share on other sites More sharing options...
codez Posted June 13, 2012 Report Share Posted June 13, 2012 Notestēju, tieši tas pats. Testēji ar visu ciklisku datu lasīšanu no file handlera un regulāru php output bufera flush-ošanu? Quote Link to comment Share on other sites More sharing options...
marrtins Posted June 13, 2012 Report Share Posted June 13, 2012 Tas svn nemēģina nolasīt kādus konfigus no user foldera, bet PHP nepietiek tiesību? Vispār laid caur CLI vai apache? Quote Link to comment Share on other sites More sharing options...
aaxc Posted June 14, 2012 Author Report Share Posted June 14, 2012 Problēma atrisināta, vajadzēja pievienot --non-interactive parametru un vis aiziet pa smuko: <?php function svn_exec ( $cmd, $log_file = false ) { $log = ""; if ( $log_file ) $log = ' > ' . $log_file; if ( $_REQUEST['debug'] ) echo '<p style="color: blue;">' . $cmd . ' ' . SVN_DIR . '</p>'; if ( $svn_result = shell_exec( $cmd . ' ' . SVN_DIR . $log ) ) { $result = "Success:\n\n" . $svn_result; //echo "<code>" . ( str_replace ( array('<','>', "\n"), array('<','>', '<br />'), $svn_result ) ) . "</code>"; } else { $result = 'Fail'; } return $result; } echo "<pre>"; echo svn_exec ( 'svn --non-interactive log --xml --quiet' ); echo "</pre>"; ?> 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.