示例#1
0
 public static function moveFtpFile($filename, $process)
 {
     $ftp_dir = $process . '/';
     $final_destination = '/processed_feed/' . $filename;
     $ftp_conn = ftp_connect(config('monster.ftp_server'), 21);
     if ($ftp_conn) {
         $ftp_login = ftp_login($ftp_conn, config('monster.ftp_user'), config('monster.ftp_password'));
         if ($ftp_login) {
             $is_passive = ftp_pasv($ftp_conn, true);
             if ($is_passive) {
                 $is_dir_changed = ftp_chdir($ftp_conn, $ftp_dir);
                 if (!$is_dir_changed) {
                     ftp_close($ftp_conn);
                 } else {
                     // move ftp file
                     $ftp_files = ftp_nlist($ftp_conn, "");
                     if (in_array($filename, $ftp_files)) {
                         if ($process == 'test' || $process == 'processed_feed') {
                             // TO DO: keep it to test the export process
                             $is_deleted = ftp_delete($ftp_conn, '/' . $ftp_dir . $filename);
                             if ($is_deleted) {
                                 ExportLog::create(['process' => $process, 'filename' => $filename, 'message' => 'was deleted from FTP [' . $process . '] folder']);
                                 FileInProgress::where(['file_name' => $filename])->delete();
                             } else {
                                 ExportLog::create(['process' => $process, 'filename' => $filename, 'message' => 'cannot be deleted']);
                                 FileInProgress::where(['file_name' => $filename])->delete();
                             }
                         } else {
                             $is_moved = ftp_rename($ftp_conn, $filename, $final_destination);
                             if ($is_moved) {
                                 ExportLog::create(['process' => $process, 'filename' => $filename, 'message' => 'was moved to FTP [processed_feed] folder']);
                                 FileInProgress::where(['file_name' => $filename])->delete();
                             } else {
                                 ExportLog::create(['process' => $process, 'filename' => $filename, 'message' => 'cannot be moved to [' . $final_destination . ']']);
                             }
                         }
                     } else {
                         ExportLog::create(['process' => $process, 'filename' => $filename, 'message' => 'is not found on the FTP server']);
                     }
                 }
             }
         }
         ftp_close($ftp_conn);
     }
     //queue local file for deletion
     FileDeleteQueue::create(['file_name' => $filename]);
 }