Til nr. 1:
Du kan ikke garantere, at dit script ikke får en timeout. Men kig på
http://us3.php.net/manual/en/function.set-time-limit.php og især bruger-kommentarerne, da de kommer med en masse hints, alt efter hvilken server du kører på. Så har du da mulighed for at forlænge dit scripts levetid.
Hvis du har bruger for at lave nogle beregninger der tager
meget lang tid, skal du overveje at dele beregningerne op i del-problemer og lave en form for job-kø, f.eks. med en database og en side der bliver ved med at kalde dit script. Men serverens ejer bliver måske lidt sur på dig, hvis du suger for meget kraft til dine beregninger.
Til nr. 2:
Eftersom nogle browsere og servere ikke sender outputtet før det hele er færdig, kan du ikke løbende outputte, som f.eks. (pseudokode):
for i = 1 to 1000 {
print i, " ud af 1000";
sleep(1 sec);
}
I stedet kan du muligvis dele tingene op, så du har et par filer som f.eks.:
A. Hoved-siden som (1) kalder et eksternt script der laver beregninger og (2) kan vise løbende status.
B. Det eksterne script kan løbende udskrive status til en midlertidig log-fil. Dette kan du selv helt præcist styre. Evt. også en session, men jeg ved ikke hvordan det synkroniseres.
C. For at vise den løbende status, skal du bare have et simpelt script, der indlæser log-filen og som samtidig har en REFRESH meta-tag, så den selv bliver genindlæst løbende.
I hovedsiden kan (1) og (2) laves i iframes.
Jeg har ikke nogen konkrete eksempler på dette, da det er noget jeg lavede for meget lang tid siden. Men det gav nogle okay resultater.