【비망록】PHP와 Ajax(jquery)로 진행 상황(프로그레스 바)를 표시한다
개요
결국 어떻게 되었습니까?
처리 구성 (간결하게)
데이터 삽입 조건
삽입 중 화면 상태
삽입 후 화면 상태
환경
, , , 사내 툴이라고 하는 일도 있어 리프레스의 예정도 없고 낡습니다.
ajax에서 값 교환 대신 로컬 파일에서 수시로 읽는 형태
진행 상황은 업로드뿐입니까? 조사해도별로 나오지 않습니다.
구현 (실제보다 쉽게 만든 것을 씁니다)
진행 상황까지의 흐름
1.Insert 시작
2.Insert는 루프가 되어 있어 그 속에서 진행 상황을 덮어쓰기로 내보내도록 했습니다
insert.php
foreach ($idData as $id) {
// 進捗率を求める(小数点以下はfloor()で切り捨て)
$percent = floor($insertedIdCnt / $allIdCnt * 100);
// ファイルに書込み
$fp = fopen('percentNow.log', 'w');
fwrite($fp, $percent);
fclose($fp);
// 挿入処理
// 1ループ10秒止めておく
sleep(10);
}
progress.js
var Progress = (function() {
function Progress(p) {
this.bar = document.querySelectorAll('#progressBar > .progressBarBody')[0];
this.p = p;
this.update();
}
Progress.prototype.update = function() {
this.bar.style.width = this.p + '%';
}
Progress.prototype.countup = function(data) {
if (this.p < 100) {
this.p = Number(data);
}
this.update();
}
return Progress;
}());
// 進捗率と進捗バーを更新する部分です
var updateProgress = function(progress) {
$.ajax('./hogehoge/percent.log', {
dataType: 'text',
success: function(data) {
$('#progress').html('進捗状況: '+data+'%');
progress.countup(data);
}
});
}
// 今回はsubmitが2つあるためclickとボタンのID(#register)で処理します
// 10秒ごとにInsert≒進捗率変更なので1秒ごとに取得すれば十分かなと思いそう設定しています
$('#register').on('click', function() {
$('#progressArea').html('<div id="progressBar" class="progress"><div class="progressBarBody"></div></div>');
var progress = new Progress(0);
$('#progress').html('進捗状況: 0%');
setInterval(function() {
updateProgress(progress);
}, 1000);
});
view.html
<!-- 進捗状況表示 -->
<div id="progressVal">
<span id="progress"></span>
</div>
<div id="progressArea">
</div>
style.css
.progress {
width: 60%;
height: 30px;
background-color: #F5F5F5;
border-radius: 4px;
box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
}
.progressBarBody {
transition: width 0.5s linear;
height: 100%;
background-color: #337AB7;
border-radius: 4px;
}
참고
h tps://쿠로에ゔぇry다 y. bgs포 t. 이 m/2016/03/p 로그 뻗어 r. HTML
Reference
이 문제에 관하여(【비망록】PHP와 Ajax(jquery)로 진행 상황(프로그레스 바)를 표시한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/goppy001/items/1e2d5eeaa596747124cc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)