Nasıl hakkında ...
Biz toplam iş (% 100) ve php komut dosyası (% yapılır durumu) altında olduğunu noktasını belirlemek için bir yol olduğunu varsaymak zorunda, bu yüzden bir metin dosyası ayrıştırma / okuyor ise, ayrıştırma işlevi olabilir db veya metin dosyasına toplam satır sayısı yazarak başlayın. Sonra o da aynı dosyanın her 5 saniyede üzerinde bulunuyor hangi hat numarası yazabilirsiniz. Js ajax fonksiyonu, toplam almak için bu metin dosyasına çağırır ve nokta üzerinde. Php metin ayrıştırıcı yapıldığında, vb sunucu alanı, dosya adı çakışmalarını alarak önlemek için durum dosya yok
Örnek:
İlk olarak, sunucuya (jquery) ajax fonksiyonu Mesajlar:
$.post("parser.php", { file: "somefile.txt"} );
//I admit, I'm not sure if this is how a file would be posted with ajax
Sonraki, php dosyasını çeker ve ayrıştırıcı işlevi başlar:
$tmpName = $_FILES['userfile']['tmp_name'];
$fileName = $_FILES['userfile']['name'];
//Turn the file into an array, so that you can use the array count for status:
$content = file($tmpName);
// Get the array count as the total, as it equals the line count:
$total = count($content);
//Write the filesize to a unique "total" txt file:
$total_file = fopen($fileName."-total.txt", 'x');
fwrite($total_file, $total);
fclose($total_file);
//Pass the Array to the parser function:
parser($content, $fileName);
//Kill the file when the function is done:
unlink($fileName);
function parser ($file_array, $filename) {
//creates the status file and then closes it, to ensure that it
//exists for the loop but gets overwritten each time
$status_file = fopen($filename."-status.txt", 'x');
fclose($status_file);
foreach($file_array as $position => $data) {
//Do your parsing here //
.............
//reopen status file and wipe out what is in it already:
$status_file = fopen($filename."-status.txt", 'w');
fwrite($status_file, $position);
fclose($status_file);
}
}
Yani durumu ve toplam dosya paylaşımına beri yüklenen dosyanın hopefully benzersiz ad, ajax işlevi nereye bakacağını biliyor. Bu yapabilirsiniz:
total = $.get("somefile-total.txt");
current = $.get("somefile-status.txt");
status = current/total;