miroslav.chandler написав:HetmanNet написав:miroslav.chandler написав:set_time_limit()
Але це час виконання PHP скрипта задаєш інтерпретатору, на що веб-серверу начхати і він його може достроково завершити. Вся загадка у максимальному часі на відповідь на запит, у http він має максимальну межу, відповідно веб-сервер за неї не стане виходити, тому змушений всі скрипти до цього моменту зупиняти, бо опісля їх результат роботи сенсу не матиме.
лол, де це в специфікації http протоколу вказано, скільки часу виділяється на один запит?
сервер буде дотримуватися тих меж, які вказані в конфігурації.
на скільки я пам'ятаю, в апачі з mod_php, таке обмеження взагалі відсутнє, а в nginx є деректива, після перевищення ліміту якої, nginx просто перестане слухати бекенд і відвалиться з 500.
так шо нехай Хантер нехай попробує поставити set_time_limit(), а там побачимо)
В http протоколі вказано скільки часу максимум очікувати на відповідь на запит, тобто за скільки часу вважати запит втраченим і з'єднання з сервером також. Тож при розробці веб-сервера це враховують. Щодо апача, то він замість того, щоб перестати слухати, просто наказує скрипт перестати виконувати та помилку повертає. Стандартно і браузер і веб-сервер мають час на очікування 30 сек., в цей час сервер має подати ознаки життя, після того клієнт очікує повернення даних до моменту як мине 55 сек. від запиту, якщо дані передавати сервер не почав, то просто з'єднання вважається втраченим. Цей час можна максимум до двох хвилин збільшити, точніше перший час на очікування ознак життя і другий час на очікування передачі від сервера.
А ви що думали, протокол не містить часових меж? Ні клієнт ні сервер очікувати сто років на ваш грьобаний запит не будуть, бо так ніякої пам'яті не стане. Але не треба забувати, про клієнта також, бо сервер припине запит обробляти щойно клієнт закриє з'єднання.