ホームページ  >  記事  >  バックエンド開発  >  PHP のインポートとエクスポートに進行状況バーを表示するにはどうすればよいですか? ?

PHP のインポートとエクスポートに進行状況バーを表示するにはどうすればよいですか? ?

WBOY
WBOYオリジナル
2016-06-23 14:23:591854ブラウズ

ユーザーフレンドリーにするために、プロンプトが表示されたときに進行状況をオフラインプログレスバーで表示したいのですが、方法がわかりません。
私のインポートは、ファイルを csv 形式でインポートし、それを直接読み取り、データテーブルに挿入することです。 エクスポートも、直接クエリを実行して csv 形式のファイルを生成します。
進行状況バーを作成することはできます。インポートとエクスポートの実行の進行状況を取得し、ajax と js を使用して進行状況バーを更新する方法がわかりません。


ディスカッションに返信 (解決策)

sliverlight、flash、html5 を介したクライアント サポート

またはサーバー側で、apc 拡張機能を確認します。あるようですが、名前を忘れました

これはajaxの使い方は簡単です 実装するには、関連情報を確認できます

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; '2cacc6d41bbb37262a98f745aa00fbf0'
ob_flash()
flash(); キーそれは、このステップ「// 合計金額と現在のタスク $i に基づいてタスクの進行状況を計算する」のやり方がわからないということです
このステップのやり方を知りたいのですが?
6階のhnxxwyqさんからの返信を引用:
PHPコード
// 他のhtml+jsプログレスバーコードを省略

$i = 0;

while($if2c4d61bd44968cd28e5d18df08ddd92進行状況バーの js を '.$i.'65064ffb96d5ea55e266e6c928cecf60進行状況バー js を '.$ に変更しますi.'2cacc6d41bbb37262a98f745aa00fbf0';
ob_flash()
flash(); }

……

インポートするとき、csv の合計行数は n で、m 行が読み取られると計算できます。固定時間 (効率に応じて変更可能)、m 行が処理されるたびに、最終的な進行率は、floor(i*m / n) * 100 になります。

10階のwxhbbddの返信から引用:

6階のhnxxwyqの返信から引用:
PHPコード
// 他のhtml+jsプログレスバーコードを省略
$i = 0;
while($i88bd402a6fd07b6d7d27c51eba9bf9b3進行状況バー js を '.$i' に変更します。 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 {
//アップロードフォームを表示
}

コレクション 名前を残してください~~~

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。