대량 데이터를 csv파일을 통해 insert시 알림 질문드립니다.

add_shortcode("csv_upload_shortcode", "csv_upload_shortcode");
function csv_upload_shortcode(){
global $wpdb;

ob_start();
ini_set('max_execution_time',60);
set_time_limit(60);

$role = Check_RoleAndIsLogged($_SESSION["uid"],$_SESSION["is_logged"]);

// Table name
$tablename = $wpdb->prefix."text_table";

// Import CSV
if(isset($_POST['butimport'])){

    echo "<script>alert('약 20초 소요됩니다. 잠시만 기다려주세요.')</script>";
    ob_flush();
    flush();
    sleep(1);

    // File extension
    $extension = pathinfo($_FILES['import_file']['name'], PATHINFO_EXTENSION);

    // If file extension is 'csv'
    if(!empty($_FILES['import_file']['name']) && $extension == 'csv'){

        $wpdb->query("TRUNCATE TABLE `{$tablename}`"); // 테이블 데이터 초기화

        $totalInserted = 0;

        // Open file in read mode
        $csvFile = fopen($_FILES['import_file']['tmp_name'], 'r');

        $row = 0;
        while (($data = fgetcsv($csvFile)) !== FALSE) {
            if($row == 0) { // 첫 행은 스킵
                $row ++;
                continue;
            }

            

            $wpdb->insert($tablename, array(
                'containercode' =>trim($data[0]),
                'code' =>trim($data[1]),
                'description' =>trim($data[2]),
                'itemstatus' =>trim($data[3]),
                'statusdate' =>trim($data[4]),
                'accountdescription' =>trim($data[5]),
                'adddate' =>trim($data[6]),
                'category_01' =>trim($data[7]),
                'category_02' =>trim($data[8]),
                'category_03' =>trim($data[9]),
            ));

            $row++;
        }
        echo "<h5 style='color: green;'>Total record Inserted : ".($row-1)."</h5>";
        fclose($csvFile);


    }else{
        echo "<h5 style='color: red;'>CSV 파일만 업로드 가능합니다.</h5>";
    }

}

?>
<script>
    <?php if($role != 'admin'){?>
    alert('관리자 페이지입니다.');
    window.history.back();
    <?php }?>
</script>

<!-- Form -->
<p style="color:#d80202; margin-bottom:10px">* 업로드 전에 전체 리스트를 반드시 백업해주세요 ! *</p>
<form method='post' action='<?= $_SERVER['REQUEST_URI']; ?>' enctype='multipart/form-data'>
  <input type="file" name="import_file" >
  <input type="submit" name="butimport" value="Import">
</form>

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>
    // $(document).ready(function(){
    //     $("form").submit(function(event) {
    //         alert('확인 클릭 후 약 20초 소요됩니다. \n잠시만 기다려주세요.');
    //     });
    // });
</script>


<?php

return ob_get_clean();
}

post 받았을시에 먼저 시간이 소요된다는 알림으로 시작하고 싶습니다.

버퍼가 채워지기 전에 먼저 출력하기 위해 ob_flush를 생각했는데 모두 insert된 후에 출력이 되네요.

insert 이루어지긴 전에 alert 방법이없을까요?

현재는 약 15초 정도 빈 화면에서 로딩만 이루어지고 이후에 알림과 함께 완료됩니다.

조언 부탁드립니다 :)

 

새해 복 많이받으세요 !

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요