![]() |
про реализацию таймаута на php
люди, есть скрипт,там цикл, в конце цикла скрипт вызывает функцию, та функция работает с сокетами и я вынес её в отдельный файл а в основном скрипте прописсал include(файл.php), нужно поставить таймаут как то на функцию целиком эту, и чтобы основной скрипт продолжал работать если функция прервалась по таймауту т.е. цикл продолжал бы выполняться, а если написсать set_time_limit(xx); в файле с функцией, то весь скрипт перестаёт работать, а нне только функция.
вопросик, как прерывать функцию по условию что время её работы истекло, и продолжать выполнение php? |
1 вариант - pcntl_fork()
2 - напрямую через системные вызовы() [удобнее popen() proc_open()] |
начал делать с помощью proc_open:
Код:
<?phpNeed help, как принудительно прерывать функцию под названием function_needed_timeout($zz) через заданный промежток времени? |
В данном случае таймаут выставляй не с помощью set_time_limit(), а контроллируй время выполнения скрипта(`потока`) главным скриптом.
|
sleep() ? :D
|
Причем здесь sleep()?
|
По сабжу:
Таймаут на функцию - значит таймаут на соединение сокета. Функция fsockopen принимает пятый параметр timeout, по истечении которого хост считается мертвым. Таймаут на скрипт - это set_time_limit, определующий максимально допустимое время выполнения скрипта. Для неограниченного выполнения - set_time_limit(0). Функция не работает с Safe Mode. Так же не забывает про то, что у Apache есть свой таймаут и подвисшие процессы он убивает самостоятельно. Так что если хотим работы скрипта "пока не исполнится" - запускаем его через exec/system/popen и т.п. |
А вот так я запускаю скрипты в фоновом режиме:
PHP код:
PHP код:
|
EOL:
PHP код:
|
Цитата:
PHP код:
пасибки большое, что пишите свои мысли по этому поводу, пока ещё не сделал что нужно, учусь типа.) :cool: |
| Время: 04:36 |