Тема: Час виконання запиту веб сервером.

От є в мене один скрипт, який працює ну дууууже довго. Запускаю я його звісно через браузер, 127.0.0.1/script.php
він виконується деякий час, а далі виконання тупо обривається. Опція php max_execution_time установлена в 0. Але переривання виконання всеодно відбувається. Мені підказали, що це зв`язано з тим, що сам веб сервер перериває. Можна якось це обійти ? Як зробити, щоб веб сервер не обривав з`єднання і не переривав виконання ?
Сервер Apache/2.2.22 (Win32).
p.s: запускати скрипт з консолі - не виходить, оскільки він використовує деякі глобальні змінні.

2

Re: Час виконання запиту веб сервером.

Тобі було сказано, на Python перепиши і мізки не пар, трохи підправиш, деякі стандартні функції PHP сам напишеш і щастя будеш мати. Веб-сервер робили запити обробляти, а не годинами програми ганяти.

Подякували: drWoZD1

3

Re: Час виконання запиту веб сервером.

Hanter написав:

Опція php max_execution_time установлена в 0.

Де саме і як саме?

Re: Час виконання запиту веб сервером.

koala написав:
Hanter написав:

Опція php max_execution_time установлена в 0.

Де саме і як саме?

У файлі php.ini опція max_execution_time = 0

5

Re: Час виконання запиту веб сервером.

я давно колись возився із Денвером, то там у налаштуваннях пір духа - існує декілька файлів налаштувань але з різними пріоритетами, тож дивіться не в одне місце.

Подякували: koala1

6

Re: Час виконання запиту веб сервером.

HetmanNet, підтримую

Подякували: HetmanNet1

Re: Час виконання запиту веб сервером.

0xDADA11C7 написав:

я давно колись возився із Денвером, то там у налаштуваннях пір духа - існує декілька файлів налаштувань але з різними пріоритетами, тож дивіться не в одне місце.

А можна більш детально ? Бо я щось не до кінця зрозумів, про що саме мова.

8

Re: Час виконання запиту веб сервером.

Hanter написав:

А можна більш детально ? Бо я щось не до кінця зрозумів, про що саме мова.

Мова про те що не одне лише php.ini впливає на поведінку.

9

Re: Час виконання запиту веб сервером.

0xDADA11C7 написав:
Hanter написав:

А можна більш детально ? Бо я щось не до кінця зрозумів, про що саме мова.

Мова про те що не одне лише php.ini впливає на поведінку.

Зважаючи, що використовується Apache то httpd.conf теж має вплив, бо саме він визначає скільки екземплярів запускати і максимальний час виконання кожного :)

Подякували: 0xDADA11C7, drWoZD2

10

Re: Час виконання запиту веб сервером.

Хм, а хіба не можна це асинхронно робити, щоб скрипт сам надіслав результат коли закінчить?

11

Re: Час виконання запиту веб сервером.

set_time_limit()

12

Re: Час виконання запиту веб сервером.

Torbins написав:

Хм, а хіба не можна це асинхронно робити, щоб скрипт сам надіслав результат коли закінчить?

ні :(

13

Re: Час виконання запиту веб сервером.

miroslav.chandler написав:

set_time_limit()

Але це час виконання PHP скрипта задаєш інтерпретатору, на що веб-серверу начхати і він його може достроково завершити. Вся загадка у максимальному часі на відповідь на запит, у http він має максимальну межу, відповідно веб-сервер за неї не стане виходити, тому змушений всі скрипти до цього моменту зупиняти, бо опісля їх результат роботи сенсу не матиме.

14 Востаннє редагувалося miroslav.chandler (19.05.2014 11:56:38)

Re: Час виконання запиту веб сервером.

HetmanNet написав:
miroslav.chandler написав:

set_time_limit()

Але це час виконання PHP скрипта задаєш інтерпретатору, на що веб-серверу начхати і він його може достроково завершити. Вся загадка у максимальному часі на відповідь на запит, у http він має максимальну межу, відповідно веб-сервер за неї не стане виходити, тому змушений всі скрипти до цього моменту зупиняти, бо опісля їх результат роботи сенсу не матиме.

лол, де це в специфікації http протоколу вказано, скільки часу виділяється на один запит?
сервер буде дотримуватися тих меж, які вказані в конфігурації.
на скільки я пам'ятаю, в апачі з mod_php, таке обмеження взагалі відсутнє, а в nginx є деректива, після перевищення ліміту якої, nginx просто перестане слухати бекенд і відвалиться з 500.
так шо нехай Хантер нехай попробує поставити set_time_limit(), а там побачимо)

15

Re: Час виконання запиту веб сервером.

miroslav.chandler написав:
HetmanNet написав:
miroslav.chandler написав:

set_time_limit()

Але це час виконання PHP скрипта задаєш інтерпретатору, на що веб-серверу начхати і він його може достроково завершити. Вся загадка у максимальному часі на відповідь на запит, у http він має максимальну межу, відповідно веб-сервер за неї не стане виходити, тому змушений всі скрипти до цього моменту зупиняти, бо опісля їх результат роботи сенсу не матиме.

лол, де це в специфікації http протоколу вказано, скільки часу виділяється на один запит?
сервер буде дотримуватися тих меж, які вказані в конфігурації.
на скільки я пам'ятаю, в апачі з mod_php, таке обмеження взагалі відсутнє, а в nginx є деректива, після перевищення ліміту якої, nginx просто перестане слухати бекенд і відвалиться з 500.
так шо нехай Хантер нехай попробує поставити set_time_limit(), а там побачимо)

В http протоколі вказано скільки часу максимум очікувати на відповідь на запит, тобто за скільки часу вважати запит втраченим і з'єднання з сервером також. Тож при розробці веб-сервера це враховують. Щодо апача, то він замість того, щоб перестати слухати, просто наказує скрипт перестати виконувати та помилку повертає. Стандартно і браузер і веб-сервер мають час на очікування 30 сек., в цей час сервер має подати ознаки життя, після того клієнт очікує повернення даних до моменту як мине 55 сек. від запиту, якщо дані передавати сервер не почав, то просто з'єднання вважається втраченим. Цей час можна максимум до двох хвилин збільшити, точніше перший час на очікування ознак життя і другий час на очікування передачі від сервера.
А ви що думали, протокол не містить часових меж? Ні клієнт ні сервер очікувати сто років на ваш грьобаний запит не будуть, бо так ніякої пам'яті не стане. Але не треба забувати, про клієнта також, бо сервер припине запит обробляти щойно клієнт закриє з'єднання.

Подякували: drWoZD1

16

Re: Час виконання запиту веб сервером.

HetmanNet написав:
miroslav.chandler написав:
HetmanNet написав:

Але це час виконання PHP скрипта задаєш інтерпретатору, на що веб-серверу начхати і він його може достроково завершити. Вся загадка у максимальному часі на відповідь на запит, у http він має максимальну межу, відповідно веб-сервер за неї не стане виходити, тому змушений всі скрипти до цього моменту зупиняти, бо опісля їх результат роботи сенсу не матиме.

лол, де це в специфікації http протоколу вказано, скільки часу виділяється на один запит?
сервер буде дотримуватися тих меж, які вказані в конфігурації.
на скільки я пам'ятаю, в апачі з mod_php, таке обмеження взагалі відсутнє, а в nginx є деректива, після перевищення ліміту якої, nginx просто перестане слухати бекенд і відвалиться з 500.
так шо нехай Хантер нехай попробує поставити set_time_limit(), а там побачимо)

В http протоколі вказано скільки часу максимум очікувати на відповідь на запит, тобто за скільки часу вважати запит втраченим і з'єднання з сервером також. Тож при розробці веб-сервера це враховують. Щодо апача, то він замість того, щоб перестати слухати, просто наказує скрипт перестати виконувати та помилку повертає. Стандартно і браузер і веб-сервер мають час на очікування 30 сек., в цей час сервер має подати ознаки життя, після того клієнт очікує повернення даних до моменту як мине 55 сек. від запиту, якщо дані передавати сервер не почав, то просто з'єднання вважається втраченим. Цей час можна максимум до двох хвилин збільшити, точніше перший час на очікування ознак життя і другий час на очікування передачі від сервера.
А ви що думали, протокол не містить часових меж? Ні клієнт ні сервер очікувати сто років на ваш грьобаний запит не будуть, бо так ніякої пам'яті не стане. Але не треба забувати, про клієнта також, бо сервер припине запит обробляти щойно клієнт закриє з'єднання.

кидайте лінки, чи шо)
в специфікації хттп, ніякого тайм ліміту нема, можу звичайно помилятись

17

Re: Час виконання запиту веб сервером.

HetmanNet написав:
Torbins написав:

Хм, а хіба не можна це асинхронно робити, щоб скрипт сам надіслав результат коли закінчить?

ні :(

Мені здавалося, що усілякі новомодні веб сокети саме для цього й потрібні.

18

Re: Час виконання запиту веб сервером.

А логи що кажуть, може там просто по меморі ліміт вилітає.