|
|
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
Есть файл xxx.exe, который обычно запрашивается из-под пхп, быстро отрабатывает и закрывается. Но на днях при таком запуске xxx.exe здорово подвис, завесив всю систему. Не подскажите, какие решения можно принять, чтобы избежать такого в дальнейшем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2011, 19:07 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
Николай А., Запусти xxx.exe отдельным потоком и организуй в PHP цикл с помощью sleep, проверяющий, отработал ли exe-шник и убивающий этот процесс, если время превысило нужный тебе таймаут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2011, 22:02 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
В директивах управления php в Apache есть опция, которая отвечает за максимальное время работы скриптов: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2011, 23:34 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
http://www.php.net/manual/en/function.set-time-limit.php] set_time_limit (); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2011, 23:37 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
2 С0ВЕСТЬ Это не вариант, PHP отработает max_execution_time и закроется, а ххх.ехе останется зависшим. 2 Николай А. Не самое красивое решение, но должно сработать. Создаёшь файл Terminate.vbs Именно его вызываешь из своего PHP скрипта. содержимое: Код: plaintext 1. 2. 3. 4. VB Скрипт запустит твой ххх.ехе, даст ему на всё про всё 5000 милисекунд и закроет, неважно успел он там сделать всё что хотел или не успел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 08:18 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
автор2 С0ВЕСТЬ Это не вариант, PHP отработает max_execution_time и закроется, а ххх.ехе останется зависшим. Именно так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 14:01 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
Николай А.автор2 С0ВЕСТЬ Это не вариант, PHP отработает max_execution_time и закроется, а ххх.ехе останется зависшим. Именно так По-умолчанию. Никто (разве что если хостер запретит) не запрещает тебе сказать в начале скрипта "Эй, парни, меня не дропать, я буду работать до победного конца!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 14:05 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
RaoulНиколай А., Запусти xxx.exe отдельным потоком и организуй в PHP цикл с помощью sleep, проверяющий, отработал ли exe-шник и убивающий этот процесс, если время превысило нужный тебе таймаут. bremborgSet WshShell = CreateObject("WScript.Shell") Set WshExec = WshShell.Exec("C:\xxx.exe") WScript.Sleep 5000 WshExec.Terminate sleep плох тем, что даже когда ххх.exe не виснет, то пхп-скрипт все равно висит назначенное количество секунд, пока не выйдет назначенное sleep время. ... Хотя способ bremborg может подойти, если получится запустить vb-скрипт в фоне. Правда не знаю как это в пхп сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 14:09 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
Edd.DragonНиколай А.пропущено... Именно так По-умолчанию. Никто (разве что если хостер запретит) не запрещает тебе сказать в начале скрипта "Эй, парни, меня не дропать, я буду работать до победного конца!" А чем это мне поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 14:10 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
Ну ты ж к чему -то написал "Именно так". Значит чем-то мешает? Я и ответил, что нет, не мешает ни разу и скрипт может выполняться сколько надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 17:44 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
Edd.DragonНу ты ж к чему -то написал "Именно так". Значит чем-то мешает? Я и ответил, что нет, не мешает ни разу и скрипт может выполняться сколько надо. Мне нужно, чтобы он, наоборот, останавливался когда надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 18:00 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
Николай А.Edd.DragonНу ты ж к чему -то написал "Именно так". Значит чем-то мешает? Я и ответил, что нет, не мешает ни разу и скрипт может выполняться сколько надо. Мне нужно, чтобы он, наоборот, останавливался когда надо Кто он? Экзешник? А предложено что было? Контролировать его выполнение из скрипта. Проблема - скрипт может отвалиться по времени. Я и говорю - не проблема, не отвалится, если попростить. А вообще ковырять надо экзешник и найти все места, в которых он САМ СЕБЯ не проверяет и может зациклиться. Ну и "подвесил всю систему" - это как? Одноядерный сервер? Значит приоритет запуска надо поменьше, чтобы в случае зацикливания система могла взять на себя одеяло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 18:05 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
Edd.DragonНиколай А.пропущено... Мне нужно, чтобы он, наоборот, останавливался когда надо Кто он? Экзешник? А предложено что было? Контролировать его выполнение из скрипта. Проблема - скрипт может отвалиться по времени. Я и говорю - не проблема, не отвалится, если попростить. Об этом вообще вопроса и не стояло. Он по любому не отвалится. То есть, если max_execution_time = 30. А через exec запустить exe-шник работающий 40 секунд, то пхп все равно не отвалится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 18:27 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
Николай А.То есть, если max_execution_time = 30. А через exec запустить exe-шник работающий 40 секунд, то пхп все равно не отвалится. Как работает PHP ? Как CGI или FastCGI ? CGI - отвалится FastCGI - не отвалится. max_execution_time вообще не надо трогать. Если ресурс посещаемый повесит веб сервис как нефиг делать. Просто из за того что в некоторый момент времени все процессы PHP будут заняты ожиданием события max_execution_time и пользователи ресурса будут лицезреть 404 или 502. И неважно сколько там ядер или оперативки. Edd.Dragon прав, ковырять желательно исходники ххх.ехе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 18:42 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
Николай А.То есть, если max_execution_time = 30. А через exec запустить exe-шник работающий 40 секунд, то пхп все равно не отвалится. Ты уж определись. Ибо твое "именно так" касалось как раз того, что PHP отвалится. Именно это ты и подтвердил тогда. авторНу и "подвесил всю систему" - это как? Одноядерный сервер? Значит приоритет запуска надо поменьше, чтобы в случае зацикливания система могла взять на себя одеяло. Или их там надцать штук запустилось и все повисли? ))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 19:19 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
Edd.DragonТы уж определись. Ибо твое "именно так" касалось как раз того, что PHP отвалится. Именно это ты и подтвердил тогда. Да какая разница, давай прекратим обсуждение этого вопроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 19:26 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
Edd.DragonИли их там надцать штук запустилось и все повисли? ))))))) Не знаю. Сервер пришлось физически перезапускать. На пхп не получилось у меня написать запуск скрипта в фоне и потом отключения, если он работает больше 10 секунд. На VB тоже, я его совсем не знаю. Зато получилось на перле, поэтому вроде вопрос решён. То есть на перле есть скрипт, которые фоном запускает екзешник. Ждёт 10 секунд, не завершился процесс, и убивает его. Делается это с помощью Win32::Process. А в пхп просто вместо екзешника вызывается этот перловый скрипт. Думаю, если там надцать штук, то это все равно должно помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 19:35 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
bremborgНиколай А.То есть, если max_execution_time = 30. А через exec запустить exe-шник работающий 40 секунд, то пхп все равно не отвалится. Как работает PHP ? Как CGI или FastCGI ? CGI - отвалится FastCGI - не отвалится. max_execution_time вообще не надо трогать. Если ресурс посещаемый повесит веб сервис как нефиг делать. Просто из за того что в некоторый момент времени все процессы PHP будут заняты ожиданием события max_execution_time и пользователи ресурса будут лицезреть 404 или 502. И неважно сколько там ядер или оперативки. Edd.Dragon прав, ковырять желательно исходники ххх.ехе FastCGI По поводу "ковырять желательно исходники ххх.ехе". Разве там всё предугадаешь. Файл большой, алгоритм сложный и тем более пишу его не я. А так, при контроле из запускающего скрипта, вроде получается намного надёжней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2011, 19:39 |
|
||
|
Ограничение времени работы скрипта
|
|||
|---|---|---|---|
|
#18+
Николай А.По поводу "ковырять желательно исходники ххх.ехе". Разве там всё предугадаешь. Файл большой, алгоритм сложный и тем более пишу его не я. А так, при контроле из запускающего скрипта, вроде получается намного надёжней. Там не надо все предугадывать, там просто надо писать думаючи. Собственно в саму прогу можно "вплести" контроль времени исполнения себя любимой )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2011, 12:19 |
|
||
|
|

start [/forum/topic.php?fid=26&msg=37393357&tid=1497907]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
140ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 440ms |

| 0 / 0 |
