ユーザーフレンドリーにするために、プロンプトが表示されたときに進行状況をオフラインプログレスバーで表示したいのですが、方法がわかりません。
私のインポートは、ファイルを csv 形式でインポートし、それを直接読み取り、データテーブルに挿入することです。 エクスポートも、直接クエリを実行して csv 形式のファイルを生成します。
進行状況バーを作成することはできます。インポートとエクスポートの実行の進行状況を取得し、ajax と js を使用して進行状況バーを更新する方法がわかりません。
sliverlight、flash、html5 を介したクライアント サポート
またはサーバー側で、apc 拡張機能を確認します。あるようですが、名前を忘れました
100の操作がある場合、最初の操作を1ずつ進め、2番目の操作を3ずつ進めることができます...
この進行状況バーの効果は行わないことをお勧めします速度に影響する可能性があるため
「インポート」を行うだけです
// 省略其他html+js进度条代码$i = 0;while($i<100) { // 执行内容 sleep(1); // 根据总量和当前任务计算任务进度$i $i = $i++; echo '<script>进度条变更js到'.$i.'</script>'; ob_flash() flash();}
<?php// 进度条演示代码,页面输出ob_start();header('Content-Type: text/html;charset=utf-8');echo '当前任务进度:<span id="p">0%</span>';echo str_repeat(' ', 4096);ob_flush();flush();// 执行任务$i = 0;while($i<100) { // 执行内容 sleep(1); // 根据总量和当前任务计算任务进度$i $i++; echo '<script type="text/javascript">document.getElementById(\'p\').innerHTML = "'.$i.'%";</script>'; ob_flush(); flush();}
以前にコレクションを実行していたときにこれを書きましたが、Chrome で試してみました。進捗状況は実行されません
http://devp.cosrc.com/scroll2.php
PHP コード
// 他の HTML は省略します+js 進行状況バーコード
$i = 0;
while( $ i & lt; 100) {
// コンテンツを実行
sleep (1)
// 合計金額と現在のタスク $ i に基づいてタスクの進行状況を計算します
$ i ++;
echo '& lt; script & gt; ''
ob_flash()
flash(); キーそれは、このステップ「// 合計金額と現在のタスク $i に基づいてタスクの進行状況を計算する」のやり方がわからないということです
このステップのやり方を知りたいのですが?
6階のhnxxwyqさんからの返信を引用:
PHPコード
// 他のhtml+jsプログレスバーコードを省略
while($i<100) {
// 実行内容
sleep(1) );
// 合計量と現在のタスクに基づいてタスクの進行状況 $i を計算します
$i = $i++;
echo '<script>進行状況バーの js を '.$i.'</script> ;'; <br /> ob_flash() <br /> flash(); <br /> } <br /> <br /> …… <br /> <br /> 通常、この種の進行状況バーは次のように行われます <br /> まず全体的なタスクを取得し、次にそれを 1 つの次元で定量化し、次に現在の進行状況を取得しますいつでも全体で割って四捨五入してください <br /> <br /> たとえば、ファイル内に読み取る行が x 行あり、各行の内容はサイズが異なりますが、全体の進捗状況と見なすことができます。各行を計算した後の完了の 1/x <br /> <br /> 次に、各行を処理したい場合は、クエリを実行して出力を生成する必要があり、インポート メソッドは各ステップを定量化できる必要があります <br /> <br /> たとえば。 , <br /> $file_size=ファイル内のデータ行数; <br /> $current=0; //最初の行、start<br /> while (未完了) <br /> $current++ を出力します。 * 100; //Continue<br /> } <br /> <br /> 明らかに、これは段階的に処理する必要があります。ファイルを直接インポートおよびエクスポートするために既製の関数を使用する場合、中間の実行は行われません。 <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> 6 階の hnxxwyq からの返信を引用: <br /> PHP コード <br /> // 他の html+ js プログレスバーコードを省略 <br /> $i = 0; <br /> while($i<100) { <br /> // 実行内容 <br /> sleep(1); <br /> // 合計量と現在のタスクに基づいてタスクの進行状況 $i を計算 </p> $i = $i++ ; <p class="sougouAnswer"> echo '<script>進行状況バー js を '.$ に変更しますi.'</script>';
ob_flash()
flash(); }
……
インポートするとき、csv の合計行数は n で、m 行が読み取られると計算できます。固定時間 (効率に応じて変更可能)、m 行が処理されるたびに、最終的な進行率は、floor(i*m / n) * 100 になります。
10階のwxhbbddの返信から引用:
6階のhnxxwyqの返信から引用:
PHPコード
// 他のhtml+jsプログレスバーコードを省略
$i = 0;
while($i<100) {
// コンテンツを実行
sleep(1);
// 合計量と現在のタスクに基づいてタスクの進行状況 $i を計算します
$i = $i++;
echo ' ob...
$n = '総タスク量';
$m = 'バッチタスク実行量'; ($i * $m }
APC 実装方法:
APC をインストールします。インストールについては公式ドキュメントを参照してください。PECL モジュールのインストール方法を使用すると、ここでは説明されていませんが、迅速かつ簡単に行うことができます
php.ini を設定し、パラメーター apc.rfc1867=1 を設定します。 APC がアップロード プログレス バー機能をサポートしていることについては、APC ソース コードのドキュメントに説明があります
コード例:
if ($_SERVER['REQUEST_METHOD'] == 'POST') { //アップロード リクエスト
$status = apc_fetch( 'upload_' . $_POST['APC_UPLOAD_PROGRESS']) ;
$status['done'] = 1; // クライアントページの ajax 呼び出しに出力します。関連するドキュメントを自分で見つけてください。 exit;
} elseif (isset($_GET[' progress_key'])) { //アップロードの進行状況を読み取ります
$status = apc_fetch('upload_'.$_GET['progress_key']);
echo json_encode($status);
exit;
} else {
//アップロードフォームなどのその他のコード
}
Uploadprogress モジュールの実装方法:
PECL モジュールのインストール方法を使用してモジュールをインストールする
Set Uploadprogress.file.filename_template = “/ php.ini の tmp/upd_%s.txt”
コード例:
if($_SERVER['REQUEST_METHOD']=='POST') {
if (is_uploaded_file($_FILES['upfile']['tmp_name'] ){$ upload_dir = 'your_path/'; ; ;
アップロードに失敗しました
} else {
//アップロード エラー
} Elseif (! Empty ($ _ get ['sessid'])) {
header ("expires: mon, 26 jul 1997: 00 グラム」); ( "D, d M Y H:i:s") . " GMT");
header("キャッシュ制御: ストアなし、キャッシュなし、再検証する必要があります"); =0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type:text/html;charset=UTF-8");
$unique_id = $_GET['sessid'];
$uploadvalues = updateprogress_get_info($unique_id)
if (is_array($uploadvalues)) {
echo json_encode($uploadvalues); // 進行状況の読み取りが失敗しました。追加の処理ロジック
}
} else {
//アップロードフォームを表示
}
コレクション 名前を残してください~~~