| 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 |
|
| |