Questo comportamento suona come il blocco della sessione. Il modo predefinito in cui funzionano le sessioni PHP è bloccare la sessione (per evitare che due processi scrivano nell'oggetto sessione). Questo normalmente va bene per i tipici script PHP di breve durata, ma può morderti quando hai qualcosa che è di lunga durata.
Se la tua applicazione non utilizza affatto le sessioni, devi disattivare session.auto_start
in php.ini o .htaccess:http ://www.php.net/manual/en/session.configuration.php#ini.session.auto-start
(Se non lo vedi lì, o è già spento, ma stai usando una sorta di framework, il framework potrebbe avviare la sessione per te; in tal caso è più semplice passare alla soluzione successiva piuttosto che provare a combattere la struttura.)
Se stai utilizzando la sessione su alcune pagine, ma non su questo processo di lunga durata, la soluzione è chiudere la sessione all'inizio dello script, con session_write_close() :
<?
set_time_limit(0);
require '../connect.php';
require '../includes/ses.php';
session_write_close();
$i = 1;
....
Di nuovo, l'avviso del framework:se il framework sta avviando una sessione per te, inserisci session_write_close();
dopo aver incluso i file del framework, non prima! (Hai detto che era così nei tuoi commenti, motivo per cui l'ho inserito dopo le righe di richiesta.)
Se il tuo processo di lunga durata deve utilizzare la sessione, ma in sola lettura, quanto sopra funziona ancora. Vedi https://stackoverflow.com/a/14409902/841830 (Come mostra questa risposta, se è necessario scrivere alla sessione alla fine del processo di lunga durata, è anche possibile.)
(P.S. Questo è stato già risposto nei commenti, ma ho accettato la sua offerta di postare Wrikken come risposta. Sì, le voci sono vere:farò qualsiasi cosa per qualche ripetizione...)