Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: sunhater в Mar 28, 2004, 17:37



Титла: PHP Progress display
Публикувано от: sunhater в Mar 28, 2004, 17:37
Как мога да покажа съобщение да се изчака докато скриптът си изчислява нещо си?


Титла: PHP Progress display
Публикувано от: kennedy в Mar 28, 2004, 19:40
аз имах следния проблем: паяк събира информация от 1000 страници, при първия опит му дадох да ми изпълни скрипта, на един пас , но времето се оказва много, а и няма как да го спреш (натискането на стопа на браузера нищо не спира) и се получаваха едни омазвания ........ втората версия беше с рефреш, вмъкнах в бодито да се рефрешва на всяка секунда след като се зареди страницата, а скрипта си бачкаше стъпка по стъпка и извеждаше колко страници е обходил и информация за страницата.
съжелявам че не отговарям точно на въпроса ти , но това е което знам .................


Титла: PHP Progress display
Публикувано от: BULFON в 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 )
{
//разбира се това не е най-добрият начин да покажеш прогреса :)
alert( nProgress )
}


Титла: PHP Progress display
Публикувано от: peio в Mar 28, 2004, 23:16
къде го пратихте човека ...
има си функция flush(), която върши тази работа
пример:
Примерен код

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


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

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





Титла: PHP Progress display
Публикувано от: BULFON в Mar 29, 2004, 01:04
А има и друг начин. Ако скрипта ти ще изчислява много, ама наистина много дълго нещо е хубаво да праща писмо на потребителя, когато започва изчисленията, а в края да му прати писмо да се върне на страницата да си види изчислените резултати. Това също е решение. Понякога.


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


Титла: PHP Progress display
Публикувано от: в 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
Публикувано от: в 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 поддържа модални прозорци.


Титла: PHP Progress display
Публикувано от: sunhater в Apr 29, 2004, 01:59
Цитат (Guest @ Април 28 2004,17:59)
window.open('myscript.php?action=process', 'newWindow', '';)
newWindow.close();

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