Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Afiseaza text inainte sau in timpul rularii unui script
Vezi mesajul original
Du-te la pagina 1, 2  Următoare
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Subiectul anterior :: Subiectul următor  
Autor Mesaj
PCPbSlack



Data înscrierii: 23/Noi/2003
Mesaje: 143
Locație: Ploiesti

Trimis: Joi Noi 11, 2004 5:02 pm    Titlul subiectului: Afiseaza text inainte sau in timpul rularii unui script  

Nu stiu exact daca aici ar trebui sa pun aceasta intrebare, insa sper sa fie la locul potrivit.

Am un script care scoate dintr-un fisier PDF toate paginile sub forma de imagini JPG. Toate bune pana aici, pentru ca scriptul functioneaza fara nici un fel de probleme.

Insa, as dori ca inainte de pornirea scriptului sau imediat dupa ce acesta a pornit, sa afisez in browser ceva de genul: "Asteptati va rog...".

Mentionez ca nu sunt incepator in ale PHP-ului, iar sansele ca acest lucru sa fie posibil sunt foarte mici.

Multumesc mult.
Sus  
un_guru



Data înscrierii: 25/Iul/2004
Mesaje: 153
Locație: Miecurea Ciuc

Trimis: Joi Noi 11, 2004 5:44 pm    Titlul subiectului:  

nu esti incepator? :wink:
poti sa folosesti o pagina intermediara, care afiseaza ce vrei sa afiseze, si apoi te redirectioneaza catre scriptul in cauza.
Sus  
PCPbSlack



Data înscrierii: 23/Noi/2003
Mesaje: 143
Locație: Ploiesti

Trimis: Joi Noi 11, 2004 6:04 pm    Titlul subiectului:  

Ok asta m-am prins si eu... :)

Nu era nici greu, insa poti mai specific. Ca pana acum am incercat cu de toate.

Ce inseamna de toate:
1. Am incercat o redirectionare cu JS dupa ce afisam mesajul pentru asteptare. Rezultat: NU MERGE
2. Am incercat redirectionare cu header() dupa ce afisam mesajul pentru asteptare, unde prima data am primit mesaj de eroare pentru ca afisam ceva in pagina, si am folosit Output Buffering ca sa nu mai fie probleme. Rezultat: NU MERGE

Daca esti amabil, nu poti sa pui o "bucata" de cod aici, poate ma luminez si eu.

Merci mult.
Sus  
ExcalIbvr



Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea

Trimis: Joi Noi 11, 2004 6:13 pm    Titlul subiectului:  

Nu am facut chestia asta pana acum, insa primul lucru pe care l-as incerca ar fi sa am un <div> cu textul "Va rog asteptati..." pe care l-as afisa la pornirea scriptului dupa care, la un moment dat, as pune un alt <div> peste el sau pur si simplu l-as ascunde inapoi (vezi DHTML).
Sus  
un_guru



Data înscrierii: 25/Iul/2004
Mesaje: 153
Locație: Miecurea Ciuc

Trimis: Joi Noi 11, 2004 6:16 pm    Titlul subiectului:  

ce inseamna "NU MERGE"?
Iti apre ceva eroare? nu iti apare textul? nu redirectioneaza... Nu cred ca are sens sa postez banalul cod pe care si tu il sti ... nu inteleg ce nu merge.
Sus  
arond



Data înscrierii: 11/Mar/2004
Mesaje: 580
Locație: 127.0.0.1

Trimis: Joi Noi 11, 2004 6:21 pm    Titlul subiectului:  

...nu uita sa dai flush() inainte sa incepi operatia lunga (altfel e posibil ca <div>-ul tau sa zaca in vreun cache pana termini tu de procesat).

De asemenea, daca vrei un progress bar/meter, poti sa o faci "scuipand" cate o bucata de cod Javascript (<script>bla-bla</script>) care sa faca, DHTML, actualizarile vizuale pentru progress bar, etc/etc...

Numa' bune.
Sus  
PCPbSlack



Data înscrierii: 23/Noi/2003
Mesaje: 143
Locație: Ploiesti

Trimis: Joi Noi 11, 2004 6:42 pm    Titlul subiectului:  

Citat: ce inseamna "NU MERGE"?

nu merge inseamna ca nu imi arata textul pentru va rog asteptati

si ca sa fie si totul clar acesta este script-ul. stiu ca in mod normal ar trebui sa mearga.

an style="color: #000000"><?php <html> <body> <font face="arial,verdana" size="2">Generating slides...</font> </body> </html> <?php flush(); @set_time_limit(0); $nr_slides = 5; $path_to_save = 'slides/English/'; $slides_name = "slides_"; $pdf_file = "raport2003ro.pdf"; if (file_exists($pdf_file) && $nr_slides < 1000) {     for ($i = 1; $i <= $nr_slides; $i++) {         exec("gswin32 -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r96.8 -dFirstPage={$i} -dLastPage={$i} -dJPEGQ=60 -dUseCropBox -dTextAlphaBits=4 -dGraphicAlphaBits=4 -dAlignToPixels=0 -sOutputFile={$path_to_save}{$slides_name}{$i}.jpg {$pdf_file}");     } } ?> 
Sus  
PCPbSlack



Data înscrierii: 23/Noi/2003
Mesaje: 143
Locație: Ploiesti

Trimis: Joi Noi 11, 2004 7:20 pm    Titlul subiectului:  

Data viitoare ma voi invata minte. Asa se intampla cand omul nu citeste manualul, fie din graba fie din lipsa de timp. :oops:

Citat:
ben at xtramedia dot net (19-Feb-2003 03:04)

Apache 2.0.44/PHP 4.3.x
Flushing now works on a Win2k based server where as Apache 1.3.x will not.


Evident ca eu am ca testing server Win2k cu Apache 1.3.31.

Am copiat scriptul pe serverul de hosting si a mers fara probleme.

Oricum merci mult pentru ajutor.
Sus  
PCPbSlack



Data înscrierii: 23/Noi/2003
Mesaje: 143
Locație: Ploiesti

Trimis: Joi Noi 11, 2004 8:44 pm    Titlul subiectului:  

Ha, evident, o problema nu vine niciodata singura.

Scriptul de mai sus va rula dintr-un fisier separat, si va rula numai daca apar un buton submit sau un link.

Problema este el nu functioneaza, adica nu imi afiseaza textul pentru asteptare, ci imi afiseaza in continuare pagina de unde s-a dat click pe link-ul care apeleaza script-ul sau pe un buton de submit dintr-un formular care are ca action tocmai scriptul de mai sus.

Cum se poate evita aceasta problema aveti idee? Eu unul sunt in pana... :?
Sus  
PCPbSlack



Data înscrierii: 23/Noi/2003
Mesaje: 143
Locație: Ploiesti

Trimis: Joi Noi 11, 2004 9:34 pm    Titlul subiectului:  

Sincer eu nu stiu de ce mai postez intrebari pe forum daca pana la urma tot eu le rezolv.

Am gasit solutia. Poate nu este cea mai eleganta insa functioneaza perfect si nici macar nu m-am mai folosit de flush() sau de Output Buffering functions.

M-am folosit in schimb de JS, cu riscul ca acest script sa nu mearga pe browserele care nu-l suporta.

Iata solutia:

Cod:
<html>
<head>
<script>
function initScript() {
   document.location.href="scriptul_meu.php";
}
</script>
</head>

<body onLoad="initScript()">

Generating, please wait...

</body>
</html>

Eu consider problema rezolvata, insa daca are cineva o solutie functionala si mai eleganta ca asta....

Numai bine....
Sus  
arond



Data înscrierii: 11/Mar/2004
Mesaje: 580
Locație: 127.0.0.1

Trimis: Joi Noi 11, 2004 11:13 pm    Titlul subiectului:  

psoftinc a scris: Sincer eu nu stiu de ce mai postez intrebari pe forum daca pana la urma tot eu le rezolv.
Nu le mai posta :lol:.

Pe Windows XP + Apache 1.3.31 functioneaza metoda cu flush (am rezolvat oarecum aceeasi problema pentru un site, cu deosebirea ca am si un progress bar manipulat de Javascript). Cam de unde sa stim noi configuratia ta si problemele pe care le ai cu ea ?

E drept, in cazul meu, fereastra in care se afiseaza progress-ul e un popup, deci ultima ta problema n-aveam cum s-o intalnesc.

Problema e interesanta si e probabil legata de browser (daca flush() functioneaza corect atunci, dupa ce il apelezi, headerele HTTP + o jumatate de pagina au ajuns deja la browser - daca acesta se apuca sa afiseze continutul sau nu presupun ca e o chestiune legata de browserul folosit si/sau de structura exacta a HTML-ului trimis lui).

Numa' bune.
Sus  
arond



Data înscrierii: 11/Mar/2004
Mesaje: 580
Locație: 127.0.0.1

Trimis: Joi Noi 11, 2004 11:27 pm    Titlul subiectului:  

Si pentru ca m-am simtit atins in orgoliu (si ma plictisesc :)):

Cod: <!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ro" lang="ro">
  <head>
    <title>Super progress..</title>
  </head>
  <body>
  <?php
  if (isset($_GET['process']))
  {
    for ($step = 0; $step < 10; $step++)
    {
      echo '<div>Processing, step '.$step.'</div>';
      flush();
      // aici procesez la greu...
      sleep(1);
    }
    echo '<div>Done</div>';
  }
  else
  {
    echo '<a href="?process=1">Process</a>';
  }
  ?>
  </body>
</html>

Asta functioneaza as stated pe Windows XP + Apache 1.3.31 + PHP 4.3.9 si pentru IE 6, Firefox 1.0, Opera 7.23.

Numa' bune.
Sus  
PCPbSlack



Data înscrierii: 23/Noi/2003
Mesaje: 143
Locație: Ploiesti

Trimis: Joi Noi 11, 2004 11:49 pm    Titlul subiectului:  

Citat: Si pentru ca m-am simtit atins in orgoliu (si ma plictisesc ):

Imi pare rau, intentia mea nu era sa "lovesc" pe nimeni in orgoliu, insa pana acum nu m-am lovit niciodata de aceasta problema si oricum ar fi invatam din greseli.

arond imi pare rau ca te plictisesti, eu in schimb pic de somn, dar ma bucur ca poate prin topicul asta au mai fost ajutati si altii in quest-ul lor prin universul PHP.

spor la lucru tuturor.

PS: Merge super si solutia ta, nici nu ma asteptam la altceva, insa voi ramane la ce am fauct eu :D, nu de alta, dar m-am apucat deja de implementare.
Sus  
w31rd0



Data înscrierii: 15/Mar/2004
Mesaje: 165
Locație: Timisoara

Trimis: Vin Noi 19, 2004 12:41 pm    Titlul subiectului:  

ok, ce nu m-am prins eu la prima solutie este: de ce se face document.location.href?, adica tu chiar ai mult de procesat in scriptul_tau.php?

Event-ul on load se intampla imediat, deci redirectarea se face imediat si textul nu iti sta pe perioada procesarii, sau ma insel?

Solutia ci div-urile mi se pare a fi cea corecta, eu pe aia am folosit-o la un script ce dura >10 sec de ex.
Sus  
PCPbSlack



Data înscrierii: 23/Noi/2003
Mesaje: 143
Locație: Ploiesti

Trimis: Vin Noi 19, 2004 1:00 pm    Titlul subiectului:  

Si eu m-am gandit ca ar trebui sa apara imediat, insa nu este asa. Scriptul pe care il rulez poate dura si 1 min.

Pagina pe care o incarc la initScript() este afisata numai cand script-ul a terminat de procesat.
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat Du-te la pagina 1, 2  Următoare
Pagina 1 din 2


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community