配置文件
 
  1. <?php   
  2.  
  3. //setup commandline   
  4. $svn_cmd1 = 'svn.exe update ';   
  5. $svn_cmd2 = ' --username xxx --password xxx ';   
  6.  
  7. $ftp_ip = '#########';   
  8. $ftp_user = '#########';   
  9. $ftp_pass = '#########';   
  10. ?>   
  11.  

php获取svn文件,然后ftp上传服务器代码

 
  1. <?php   
  2. require_once("config.php");   
  3.  
  4. // CONFIG dir   
  5. $CONFIG_PG = 'E:\phpupdate\xxx';   
  6.  
  7. // svn上传文件列表   
  8. $svnlist = array();   
  9. $svnlist = updatesvn($svn_cmd1,$CONFIG_PG,$svn_cmd2);   
  10.  
  11. /*   
  12. $svnlist[0]= 'A E:\XXXX\Lib\Action\XXXAction.class.php';   
  13. $svnlist[1]= 'U E:\XXXXX\Action\XXXAction.class.php';   
  14. $svnlist[2]= 'At revision 5625.';   
  15. */   
  16.  
  17. $remoteArr = $svnlist//ftp上传文件列表   
  18. $localArr = $svnlist//本地文件列表   
  19.  
  20. //输出svn信息   
  21. svnMessage(&$remoteArr,&$localArr,$CONFIG_PG);   
  22.  
  23. //上传   
  24. ftp_upload($ftp_ip,$ftp_user,$ftp_pass,$localArr,$remoteArr);   
  25.  
  26. /**   
  27. * 上传svn更新   
  28. */   
  29. function updatesvn($svn_cmd1,$CONFIG_PG,$svn_cmd2)   
  30. {   
  31. //execute svn update command   
  32. $cmd = $svn_cmd1 . $CONFIG_PG . $svn_cmd2;   
  33. //echo 'Debug:'.$cmd. "<br />\r\n";   
  34.  
  35. $ar = array();   
  36. $status = 0;   
  37. exec($cmd$ar$status);   
  38.  
  39. if ( count($ar) <= 1 )   
  40. {   
  41. echo $ar[0];   
  42. echo '<br>no upload file!';   
  43. exit;   
  44. }   
  45.  
  46. //print_r($ar);   
  47.  
  48. echo  "Status: " .$status . "<br />\r\n";   
  49. return $ar;   
  50. }   
  51.  
  52. /**   
  53. * 输出调试信息   
  54. */   
  55. function svnMessage($remoteArr,$localArr,$CONFIG_PG)   
  56. {   
  57. /*   
  58. * local dir   
  59. */   
  60. for($ctr = 0;$ctr < count($localArr)-1; $ctr++)   
  61. {   
  62. //$localArr[$ctr] = str_replace ($CONFIG_FLG,'',$localArr[$ctr]);   
  63. $istr = stripos($localArr[$ctr], $CONFIG_PG);   
  64. $localArr[$ctr] = substr($localArr[$ctr],$istr);   
  65. $localArr[$ctr] = str_replace ('\\','/',$localArr[$ctr]);   
  66. }   
  67. echo "本地路径:<br />\r\n";   
  68. for($ctr = 0;$ctr < count($localArr)-1; $ctr++)   
  69. {   
  70. echo $localArr[$ctr];   
  71. echo "<br />\r\n";   
  72. }   
  73.  
  74. /*   
  75. * remote dir   
  76. */   
  77. for($i = 0;$i < count($remoteArr)-1; $i++)   
  78. {   
  79. //$remoteArr[$i] = str_replace ($CONFIG_PG,'',$remoteArr[$i]);   
  80. $imstr = stripos($remoteArr[$i], $CONFIG_PG);   
  81. $remoteArr[$i] = substr($remoteArr[$i],$imstr+strlen($CONFIG_PG));   
  82. $remoteArr[$i] = str_replace ('\\','/',$remoteArr[$i]);   
  83. }   
  84. echo "<br />\r\n上传路径:<br />\r\n";   
  85. for($i = 0;$i < count($remoteArr)-1; $i++)   
  86. {   
  87. echo $remoteArr[$i];   
  88. echo "<br />\r\n";   
  89. }   
  90. }   
  91.  
  92. /**   
  93. * ftp上传脚本   
  94. */   
  95. function ftp_upload($ftp_ip,$ftp_user,$ftp_pass,$localPathArr,$remotePathArr)   
  96. {   
  97. $conn = ftp_connect($ftp_ipor die("Could not connect");   
  98. ftp_login($conn,$ftp_user,$ftp_pass);   
  99.  
  100. if ( count($localPathArr) == count($remotePathArr) )   
  101. {   
  102. for($i = 0;$i < count($localPathArr)-1; $i++)   
  103. {   
  104. // 开始   
  105. $fp = fopen($localPathArr[$i], 'r');   
  106. $ret = ftp_nb_fput($conn$remotePathArr[$i], $fp, FTP_BINARY);   
  107. while ($ret == FTP_MOREDATA)   
  108. {   
  109.    // 加入其它要执行的代码   
  110.    echo "....";   
  111.    // 继续传送...   
  112.    $ret = ftp_nb_continue ($conn);   
  113. }   
  114. if ($ret != FTP_FINISHED)   
  115. {   
  116.    echo "上传文件中发生错误...";   
  117.    exit(1);   
  118. }   
  119. }   
  120. echo "..............................";   
  121. echo "<br />\r\n OK! <br />\r\n";   
  122. }   
  123. else   
  124. {   
  125. echo "svn check error!<br />\r\n";   
  126. }   
  127.  
  128. ftp_close($conn);   
  129. }   
  130.  
  131.  
  132.  
  133.  
  134. ?>