Автор Тема: PHP Progress display  (Прочетена 3968 пъти)

sunhater

  • Напреднали
  • *****
  • Публикации: 329
    • Профил
PHP Progress display
« -: Mar 28, 2004, 17:37 »
Как мога да покажа съобщение да се изчака докато скриптът си изчислява нещо си?
Активен

kennedy

  • Напреднали
  • *****
  • Публикации: 2151
  • Николай Колев
    • Профил
PHP Progress display
« Отговор #1 -: Mar 28, 2004, 19:40 »
аз имах следния проблем: паяк събира информация от 1000 страници, при първия опит му дадох да ми изпълни скрипта, на един пас , но времето се оказва много, а и няма как да го спреш (натискането на стопа на браузера нищо не спира) и се получаваха едни омазвания ........ втората версия беше с рефреш, вмъкнах в бодито да се рефрешва на всяка секунда след като се зареди страницата, а скрипта си бачкаше стъпка по стъпка и извеждаше колко страници е обходил и информация за страницата.
съжелявам че не отговарям точно на въпроса ти , но това е което знам .................
Активен

"за всичко иде час" Еклесиаст 3:1
всеки пост - отговор на въпрос
-----------------
24.12.2003 "MS Free"

BULFON

  • Administrator
  • Напреднали
  • *****
  • Публикации: 478
  • Distribution: Fedora
  • Window Manager: Gnome
    • Профил
PHP Progress display
« Отговор #2 -: Mar 28, 2004, 21:45 »
За още по сложен вариант:
можеш извикването на скрипрта да го правиш с POST или GET заявка но target-a да е скрит фрейм /FRAME или IFRAME/.
В скрития фрейм се презарежда /виж идеята на Кенеди/ страница в която в JavaScript обект/стринг записваш прогреса или че има все още работа. И извикваш функция от другия/parent/ фрейм чрез която показваш прогреса.
Пример за страницата която се презарежда /приемам че страницата се презарежда в скрит IFRAME/:

<html>
<head>
<META HTTP-EQUIV=Refresh CONTENT="10; URL=http://site.com/updateprogress.php">
<script>
var nProgress = 50
parent.updateStatus( nProgress )
</script>
</head>
<body>
</body>
<html>

в parent фрейма пишеш функцията
function updateStatus( nProgress )
{
//разбира се това не е най-добрият начин да покажеш прогреса '<img'>
alert( nProgress )
}
Активен

фонокартен телефонен апарат

peio

  • Напреднали
  • *****
  • Публикации: 74
    • Профил
PHP Progress display
« Отговор #3 -: Mar 28, 2004, 23:16 »
къде го пратихте човека ...
има си функция flush(), която върши тази работа
пример:
Примерен код

print "It will take some time ....";
flush();
do_heavy_calculation();


и разбира се при такива неща трябва да се увеличи максималното време за изпълнение на скрипта

и за да ти спестя загубено време: под windows flush-a работи само в тоалетната



Активен

BULFON

  • Administrator
  • Напреднали
  • *****
  • Публикации: 478
  • Distribution: Fedora
  • Window Manager: Gnome
    • Профил
PHP Progress display
« Отговор #4 -: Mar 29, 2004, 01:04 »
А има и друг начин. Ако скрипта ти ще изчислява много, ама наистина много дълго нещо е хубаво да праща писмо на потребителя, когато започва изчисленията, а в края да му прати писмо да се върне на страницата да си види изчислените резултати. Това също е решение. Понякога.
Активен

фонокартен телефонен апарат

sunhater

  • Напреднали
  • *****
  • Публикации: 329
    • Профил
PHP Progress display
« Отговор #5 -: Mar 30, 2004, 17:35 »
И с flush() и без него - все тая - страницата се показва едва след като се изпълни целия скрипт. На мен ми трябва за фото галерия, която създава thumbinals на снимките, които нямат такива, но понеже това е много бавна работа за PHP (ако се иска качество) ще трябва да съобщя някак си да се почака.
PHP-то работи под Linux.
Колкото до JavaScrip-тът - не мога да схвана напълно идеята, но в краен случай ще се заема с този вариант.
Активен

  • Гост
PHP Progress display
« Отговор #6 -: Mar 30, 2004, 18:01 »
mislia, che shte stane s javascript i <div...>, no triabva da pomislish tochno kak da go realizirash
Активен

  • Гост
PHP Progress display
« Отговор #7 -: Apr 28, 2004, 16:59 »
Можеш например да отвориш нов прозорец \window.open()\, като вътре се зарежда същия документ с определен GET параметър \например `myscript.php?action=process`\.
След javascript текста, който отваря прозореца трябва да поставиш и друг, който да го затвори след обработката
\
window.open('myscript.php?action=process', 'newWindow', '')
newWindow.close();
\

Слагаш една проверка в началото на самия документ:

if ($_GET[action]=='process'){
...
}

Вътре в тялото на if-а извеждаш текста, който искаш да види потребителя \echo 'Processing info, please wait!';\

След това извикваш обработващата функция.

Kато вариант можеш да отвориш модален прозорец, но не зная дали друго освен IE поддържа модални прозорци.
Активен

sunhater

  • Напреднали
  • *****
  • Публикации: 329
    • Профил
PHP Progress display
« Отговор #8 -: Apr 29, 2004, 01:59 »
Цитат (Guest @ Април 28 2004,17:59)
window.open('myscript.php?action=process', 'newWindow', '''<img'>
newWindow.close();

Това няма ли да отвори нов прозорец и после веднага да го затвори?
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
FoxPro ili Progress eqvivalent za Linux?
Настройка на програми
spawnman 2 963 Последна публикация Aug 03, 2003, 15:23
от spawnman
Display not found
Настройка на програми
Bohlev 1 1022 Последна публикация Jan 10, 2005, 12:28
от rpetrov
APM za display na notebook
Настройка на хардуер
sredkov 8 1909 Последна публикация Mar 19, 2005, 20:52
от spawnman
slackware display
Настройка на хардуер
KpucTuaH 4 1640 Последна публикация Oct 31, 2005, 20:53
от Goust
Display drivers
Настройка на хардуер
Vladev 5 2176 Последна публикация Mar 26, 2007, 18:14
от Vladev