ФорумПрограммированиеPHP для идиотов → Вывод записей в то время как парсю файл

Вывод записей в то время как парсю файл

  • sen4ik

    Сообщения: 217 Репутация: N Группа: Адекваты

    Spritz 27 сентября 2010 г. 19:21

    Парсю .csv файл и забиваю инфу в базу данных. csv содержит около 21000 клиентов. когда запускаю скрипт прихожится подождать около 40 секунд и вуаля все готово. но злобный клиент не будет ждать 40 секунд - он убежит со страницы и разозлится. как мне вывести на страничку какие рекорды уже обработались?
    если делаю echo то все равно надо ждать 40 секунд а только потом узреть список клиентов!
  • sen4ik

    Сообщения: 217 Репутация: N Группа: Адекваты

    Spritz 27 сентября 2010 г. 19:46, спустя 25 минут 26 секунд

    Я так понял надо flush() использовать, но как?
  • pissflaps

    Сообщения: 148 Репутация: N Группа: Кто попало

    Spritz 28 сентября 2010 г. 2:27, спустя 6 часов 40 минут 29 секунд

    Может просто с помощью JS дать пользователю понять что нужно подождать?
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 28 сентября 2010 г. 2:32, спустя 5 минут 18 секунд

    sen4ik, никак. Парсить нужно правильно файл, тогда скорость увеличиться + в целом сразу же предупреждай пользователя, что загрузка файла займет продолжительное время, так что пусть ждет пока на экране что-то не отпишется ему (либо "Ок" либо ошибка).
    flush() ещё более затянет этот процесс, хотя я и не уверен что он вообще поможет в данном случае.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 28 сентября 2010 г. 2:41, спустя 8 минут 57 секунд

    flush() ещё более затянет этот процесс, хотя я и не уверен что он вообще поможет в данном случае.

    не уверен - не пизди :D


    можно с помощью flush вывыодить JavaScript код - <script>, например отрисовать прогрессбар и его двигать из пхп таким макаром :)

    кто утверждает что нельзя пусть поцелует меня в хуй. делал не раз :)
    Сапожник без сапог
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 28 сентября 2010 г. 2:52, спустя 10 минут 55 секунд

    phpdude, что именно ты делал: прогрессбар или целовал хуй? =)))
    А вообще я ж сказал, что куй знает. То, что он будет увеличивать время обработки, так это точно. А вот будет отдавать кол-во пропарсеного или нет - реально не пробовал в такой русле делать ничего. Просто пиздячил "Ждите" и клал хуй на все такие приколы.
    Да и в целом прогрессбар чтоб запиздячить, нужно вначале посчитать сколько строк есть всего (ну это не проблема) + возможно запиздячить фильтр по выборке только определенных строк (вот тут уже просто так сходу не подсчитать сколько нужно будет загрузить строк). Так что целовать ничего не буду, но не всегда можно сделать прогрессбар в данной случае.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 28 сентября 2010 г. 4:23, спустя 1 час 31 минуту

    Givi, не кипятись, сказал бы просто "я был не прав" :)
    Сапожник без сапог
  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 28 сентября 2010 г. 4:36, спустя 13 минут 20 секунд

    надо умный прогрессбар, в котором не видно прогресса (LOL). видели — где просто полоска ебошится туда и обратно? это классная придумка юзабилистов. пользователь понимает, что надо подождать и разработчик не парится.
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 28 сентября 2010 г. 4:39, спустя 2 минуты 45 секунд

    artoodetoo, тоже вариант, еси нет способа посчитать)
    Сапожник без сапог
  • sen4ik

    Сообщения: 217 Репутация: N Группа: Адекваты

    Spritz 28 сентября 2010 г. 12:51, спустя 8 часов 11 минут 53 секунды

    Вот как я реализовал


    <html>
    <head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js""></script>
    <script>
    function loadingAjax(div_id)
    {
    $("#"+div_id).html('<img src="ajax-loader.gif"> working…');
    $.ajax({
    type: "POST",
    url: "parse.php",
    success: function(msg){
    $("#"+div_id).html(msg);
    }
    });
    }
    </script>
    </head>
    <body>
    <a href="javascript:void(0);" onclick="loadingAjax('myDiv');">Parse csv</a>

    <div id="myDiv"></div>

    </body>
    </html>
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 28 сентября 2010 г. 13:28, спустя 37 минут 31 секунду

    sen4ik, спасибо, буду юзать :)
    adw/0

Пожалуйста, авторизуйтесь, чтобы написать комментарий!