Basit PHP AJAX Dosya Okuma İlerleme Sorunları!

2 Cevap php

Tamam, bunları açıklayan çok iyi değil im, yani ayı ile beni ..

Im php tarafından çözümlenen okundu ne kadar bir metin dosyasının yüzdesini (veya ne olursa olsun) / göstermek için bir şey bir durum / ilerleme çubuğu tür gösteren bir yol bulmaya çalışıyorum. Ben (o çizgiler, ya da dosya boyutu ve gerçek metin dosyası olduğunu sayarak olmak) yapmak gerekir kabaca biliyorum ama ben aslında bunu uygulamak için nasıl çalışmak bana yaşam için cant. PHP / AJAX kullanarak yaşıyorum ve tek bir div tüm yapılır kadar sonra çıkış gösteriyor durumunu göstermek için (5 saniye ya da bir şey) sık sık her güncelleştirilmesi için ben gerçekten istiyorum hepsi bu. Kolay ha, ben bunu nasıl zannettim cehennem olsa, ben bilmiyorum. Ben getirmedi ama ben oldukça ben ne ile çalışmak için alabilirsiniz şey burada bazı gerçekten yararlı mesajları bulduk.

If anyone can give me some rough tips/ideas I would be stupidly grateful (this is really doing my head in)! Thanks in advance!

2 Cevap

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;

Sadece soruyoruz ne JQuery bulunan bazı gerçekten iyi kütüphaneler vardır. Bu öğrenme amaçları için sadece sürece, ben bu bir göz atın ve tekerleği yeniden önlemek istiyorum.

http://plugins.jquery.com/search/node/upload