CronAction.class.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. class CronAction extends Action {
  3. public function searchFile2Ftp( ){
  4. $dir = C('FTP_LOCAL_DIR');
  5. $targetDir = C('FTP_SERVER_DIR');
  6. $config = C('FTP_CONFIG');
  7. while (true) {
  8. $res = scanTargetFile($dir, 'md5');
  9. $files = explode(';', $res);
  10. array_pop($files);
  11. foreach ($files as $v) {
  12. $path_parts = pathinfo($v);
  13. //$start = time();
  14. //判断是否需要压缩,之前压缩过但没上传成功,需要重新上传
  15. $zip_file = $path_parts['dirname'].'/' . $path_parts['filename'] . '.zip';
  16. if(file_exists($zip_file)){
  17. $zip = $zip_file;
  18. }else{
  19. $zip = $this->zip($path_parts['filename'], $path_parts['dirname']);
  20. }
  21. if ($zip) {//压缩完成
  22. //echo '压缩用时:'.(time()-$start).PHP_EOL;
  23. $tagetDat = $targetDir . '/' . $path_parts['filename'] . '.zip';
  24. //echo $tagetDat . PHP_EOL;
  25. //删除本地dat文件
  26. @unlink($path_parts['dirname'] . '/' . $path_parts['filename'] . '.dat');
  27. $datRes = Zmcoding\FtpFile::getInstance($config)->up_file($zip, $tagetDat);
  28. if ($datRes) {
  29. $md5Res = Zmcoding\FtpFile::getInstance($config)->up_file($v, $targetDir . '/' . $path_parts['basename']); //md5文件
  30. if ($md5Res) {
  31. debug_log('upload_info', json_encode($targetDir . '/' . $path_parts['basename'], JSON_UNESCAPED_UNICODE));
  32. }
  33. debug_log('upload_info', json_encode($tagetDat, JSON_UNESCAPED_UNICODE));
  34. }
  35. }
  36. }
  37. // sleep(3);
  38. }
  39. }
  40. public function zip( $name, $path ){
  41. //压缩
  42. if (!file_exists($path)) {
  43. return false;
  44. }
  45. $current_dir = opendir($path);
  46. $needzip = '';//需要压缩的文件
  47. while (($file = readdir($current_dir)) !== false) {
  48. $sub_dir = $path . DIRECTORY_SEPARATOR . $file;
  49. if ($file == '.' || $file == '..') {
  50. continue;
  51. }
  52. if (is_file($sub_dir)) { //如果是.dat文件,进行赋值
  53. $pathinfo = pathinfo($file);
  54. // var_dump($pathinfo);
  55. if ($pathinfo['extension'] == 'dat' && $pathinfo['filename'] == $name) {
  56. $needzip = $file;
  57. }
  58. }
  59. }
  60. if ($needzip == '') {
  61. return false;
  62. }
  63. // var_dump($files);exit;
  64. $zip_filename = $path . '/' . $name . '.zip';
  65. @unlink($zip_filename);
  66. if (!file_exists($zip_filename)) {
  67. touch($zip_filename);
  68. $zip = new \ZipArchive();
  69. $ret = $zip->open($zip_filename, \ZipArchive::OVERWRITE);
  70. if ($ret !== true) {
  71. return false;
  72. } else {
  73. // if (!empty($files)) {
  74. // foreach ($files as $file) {
  75. $zip->addFile($path . '/' . $needzip, $needzip);
  76. // @unlink($path . '/' . $name . '.dat');
  77. // }
  78. // }
  79. $zip->close();
  80. }
  81. }
  82. return $zip_filename;
  83. }
  84. }