To zachowanie brzmi jak blokowanie sesji. Domyślnym sposobem działania sesji PHP jest zablokowanie sesji (aby uniemożliwić dwóm procesom zapis do obiektu sesji). Jest to zwykle dobre dla typowych krótkotrwałych skryptów PHP, ale może cię ugryźć, gdy masz coś, co trwa długo.
Jeśli Twoja aplikacja w ogóle nie używa sesji, wyłącz session.auto_start
w php.ini lub .htaccess:http ://www.php.net/manual/en/session.configuration.php#ini.session.auto-start
(Jeżeli go tam nie widzisz lub jest już wyłączony, ale używasz jakiegoś frameworka, framework może rozpocząć dla ciebie sesję; jeśli tak, łatwiej jest przejść do następnego rozwiązania niż próbować walczyć ramy.)
Jeśli używasz sesji na niektórych stronach, ale nie w tym długotrwałym procesie, rozwiązaniem jest zamknięcie sesji na początku skryptu za pomocą session_write_close() :
<?
set_time_limit(0);
require '../connect.php';
require '../includes/ses.php';
session_write_close();
$i = 1;
....
Ponownie, ostrzeżenie o frameworku:jeśli framework rozpoczyna dla Ciebie sesję, wpisz session_write_close();
po dołączeniu plików frameworka, nie przed! (Wspomniałeś o tym w swoich komentarzach, dlatego umieściłem to po wierszach wymaganych).
Jeśli Twój długotrwały proces musi korzystać z sesji, ale tylko do odczytu, powyższe nadal działa. Zobacz https://stackoverflow.com/a/14409902/841830 (Jak pokazuje ta odpowiedź, jeśli musisz pisać do sesji pod koniec długotrwałego procesu, jest to również możliwe.)
(ps>