Това поведение звучи като заключване на сесия. Начинът, по който PHP сесиите работят по подразбиране, е да се заключи сесията (за да се предотврати запис на два процеса в обекта на сесията). Това обикновено е добре за типичните краткотрайни PHP скриптове, но може да ви ухапе, когато имате нещо, което работи дълго време.
Ако вашето приложение изобщо не използва сесии, тогава трябва да изключите session.auto_start
в php.ini или .htaccess:http ://www.php.net/manual/en/session.configuration.php#ini.session.auto-start
(Ако не го виждате там или вече е изключено, но използвате някакъв вид рамка, рамката може да стартира сесията вместо вас; ако е така, по-лесно е да преминете към следващото решение, отколкото да се опитвате да се борите рамката.)
Ако използвате сесията на някои страници, но не и в този продължителен процес, решението е да затворите сесията в началото на вашия скрипт с session_write_close() :
<?
set_time_limit(0);
require '../connect.php';
require '../includes/ses.php';
session_write_close();
$i = 1;
....
Отново, предупреждението за рамката:ако рамката започва сесия вместо вас, тогава поставете session_write_close();
след включване на файловете на рамката, не преди! (Вие споменахте, че това е случаят във вашите коментари, поради което го поставих след редовете за изискване.)
Ако вашият дълготраен процес трябва да използва сесията, но само за четене, горното все още работи. Вижте https://stackoverflow.com/a/14409902/841830 (Както показва този отговор, ако трябва да пишете в сесията в края на дълготрайния процес, това също е възможно.)
(P.S. На това вече беше отговорено в коментарите, но приех предложението на Wrikken да го публикувам като отговор. Да, слуховете са верни:ще направя всичко за няколко повторения...)