| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Сеть > Запуск скрипта в фоновом режиме |
| Автор: maykoff 22.11.2006, 12:43 | ||||
| Проблема: нужно выполнить служебный скрипт по событию. Событие - переход по ссылке на скрипт и его отработка. 1.php:
в bin`е .../bin/2.php:
в 1.php нужно запустить 2.php, причём 1.php должен продолжить работу , не дожидаясь каких-либо ответов от 2.php Права соответствующие установили. Пробовал варианты типа exec("php /var/www/.../bin/2.php"); - не запустил, возможно, неправильно составлена команда . Заранее благодарю за внимание. |
| Автор: Mal Hack 22.11.2006, 17:14 |
| Через system попробуй. Фоновый процесс запускается с символом &. А вообще, если надо просто выполнить второй скрипт, то можно его быстренько прописать в auto_append_file |
| Автор: maykoff 23.11.2006, 10:41 | ||
| пробовал многое. листинг запускающего скрипта:
описание проблемы: скрипт запускается и корректно отрабатывает из консоли, но призапуске через веб-интерфейс происходит фигня - при отпущеном выводе (не перенаправляя его директивой > ) - скрипт запускается до тех пор, пока не кончаются ресурсы сервера (при этом не отрабатывая), если же вывод в файл - запускается и виснет... Если есть сомнения насчёт правильностьи скриптов - так их пока ещё нет, скриптов-то. Смысл писать , если запустить не получается? Не получается именно запуск на исполнение (точнее, корректное исполнение, потому что сервак вешается моментательно, если вывод не перенаправить ) Уникально ещё и то, что куча народу утверждает, что скрипт работать должен , и это действительно так, если верить людям и мануалам. Скорее всего - проблема в разнице окружения при запуске из консоли (SSH, Putty) и через вебинтерфейс, но где конкретно, и как её устранить - я просто теряюсь. PS. В принципе буду благодарен и за здравую идею, как решить эту задачу другим способом . Варианты с хроном не принимаются, как банальные, да к тому же уже и принятые к разработке |
| Автор: maykoff 23.11.2006, 18:28 |
| перекомпиллировали php как cli (был cgi), всё заработало. Подозреваю, что проблема былва именно в окружении - во втором случае, (я до конца не понял) кажется, при запуске, php выстраивает для себя новое окружение. |
| Автор: alligator 12.12.2006, 18:02 |
| достаточно просто вставить в начало скрипта ignore_user_abort(); Добавлено @ 18:04 http://ru.php.net/manual/ru/function.ignore-user-abort.php |