PHP は Excel をインポートし、フロントデスクに進行状況バーを表示します
怪我咯
怪我咯 2017-05-24 11:34:21
0
3
1338

php が Excel をインポートすると、フロント デスクに進行状況バーが表示されます。アドバイスしてください (Excel ファイルのアップロードの進行状況ではなく、php の Excel の読み取り -> データの処理 -> mysql への書き込みの進行状況バー)

怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(3)
Peter_Zhu

これは、Excel のサイズと、サーバーが 1 つのリクエストに許可する最大時間によって異なります。以下のような状況に分けられると思います

  1. Excel は非常に小さいので、インポートは 1 ~ 2 秒で完了します。この場合、偽の進行状況バーを表示するだけで十分です。たとえば、最初の 1 秒間のアニメーションの進行状況は 50% に達し、2 秒目のアニメーションの進行状況は 75% に達し、3 番目のアニメーションの進行状況は 90% に達し、サーバーが OK を返した後、進行状況は 100% に達します。

  2. Excel は比較的大きいですが、サーバーがリクエストに対して許可する最大時間内で完了できます -- この場合、いくつかのアプローチがあります:

    1. 簡単かつ大まかに言うと、Excel へのインポートの進行状況を推定し、それを特定の場所 (データベース内のフィールドなど) に保存します。別の ajax リクエストまたは EventSource を作成して、一定期間 (500 ミリ秒など) ごとに進行状況をポーリングします。 )アニメーションを表示します。

    2. HTTP ロング接続を使用して、Excel をインポートするリクエストの進行状況を出力します。必ずブラウザーを更新してください。ブラウザーは、返されたデータに基づいて進行状況のアニメーションを表示します。

  3. Excel が非常に大きいか、ビジネスが複雑で、サーバーが要求に対して許可する最大時間内に完了することができません -- 現時点で、サーバーが CLI スクリプトを実行できる場合は、CLI スクリプトを実行して次のことを行うことをお勧めします。 import (進捗状況の表示については、2.1 を参照してください) ; それ以外の場合は、Excel をステップ/時間/セクションに分割し、ブラウザでインポート タスクをステップごとに実行し、分割された結果に従って進捗状況を表示する必要があります。

いいねを押す +0
我想大声告诉你

Excelを読み込んだ後、レコードの総数を取得できますか?
はい、処理されたレコード数/合計数を数えるだけです。
いいえ、それなら 100% 完了の進行状況バーをあきらめて、私がまだ生きていることを示すために繰り返しループする進行状況バーを作成してください。

いいねを押す +0
PHPzhong

swoole を使用できるかどうかはわかりません。つまり、Excel をアップロードした後、レコード数を取得し、swoole を直接使用して SQL をインポートできるかどうかはわかりません。データベース内のレコード数をカウントすることで、現在のページの進行状況のパーセンテージを取得できます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート