簡體   English   中英

某種PHP沖洗

[英]Some kind of php flush

讓我描述一下我首先做的事:

我必須從不同的xml導入大量數據到我的數據庫中,因為它持續了很多時間,所以我必須放置一個進度條,並且這樣做是這樣的:我將整個導入拆分成很小的AJAX小請求,並且在時間(一個ajax請求完成進度條時會增加一點)。 整個想法很棒,但是數據只會越來越大,我再也無法優化代碼了(它會盡可能地得到優化)。

問題在於,每次我進行AJAX調用時,我都會花很多時間在框架特有的內容(模型初始化和內容)上,而瀏覽器會處理url等。 所以我想知道是否可以使用php中的flush函數。

但是我一直在閱讀沖洗功能並不是在所有瀏覽器上都很好用(這很奇怪,因為它是服務器端功能)。 如果我要使用沖洗功能,則只需編寫<script>increase_progressbar</script>或任何我想要的東西,我就可以做到。

那么,對沖洗功能有何看法? 我一直在小腳本上對其進行測試,但我想知道是否有人真的在大型腳本上使用了它。 另外,我可以聽聽做我想做的任何其他建議:)

我不會直接給您建議,但是我會告訴您我在我的一個項目中是如何做到的。 就我而言,我需要上傳一個Excel文件,然后解析它們。 數據超過3000行,我不得不檢查每行的所有列中是否有某些數據。 當我在上傳后直接對其進行解析時,解析器經常會在某處崩潰,這確實不安全。

那我是怎么做到的? 上傳過程分為兩部分:

  1. 物理上載文件(常規上載字段並提交)。 當單擊按鈕時,一些CSS和JS“魔術”隱藏了表單,並且屏幕上出現了一個漂亮的加載欄。 上傳完成后,頁面將刷新,並且該表格再次顯示下一個文件

  2. 開始使用php-cli在后台解析數據,就像@Dragon在exec()中建議的那樣。

在數據庫中,我有一個表,用於存儲有關文件的信息,並且有一個布爾字段,稱為“已解析”。 解析器完成工作后,最后一項任務是將該字段更新為true。

因此,這是從用戶角度來看的整個過程:

  1. 選擇一個文件並上傳。
  2. 等待文件上傳到服務器上。 直到出現一條消息和加載欄,表明正在工作。 上傳表單已被CSS和JS隱藏,因此可以防止用戶上傳其他文件。
  3. 結束時,頁面已刷新(因為我進行了正常的_POST提交),該表單以及最近上載的文件列表再次出現在屏幕上(此文件已存儲在會話中)。
  4. 在該列表的每個節點中,我都有一個指示符(一個圖標)。 第一次是旋轉器(ajax紡車)。
  5. 定期(30秒或1分鍾),我已經通過Ajax調用檢查了文件表並讀取了已解析的字段。 如果后台進程已結束,則將該字段設置為true,並使用一些JS和CSS將圖標更改為“完成”。 否則,微調器將保留。

在我的項目中,我不需要顯示有關導入的額外詳細信息,但是您總是可以將其他額外的數據付諸東流。

希望這對您的項目有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM