php exec несколько команд, перезапуск apache - PullRequest
4 голосов
/ 23 июня 2011

Мне нужно запустить 2 команды через exec ();первая команда представляет собой оболочку, вызывающую подписку (панель Plesk), вторая также является командой plesk для dns.

Примечание. После выполнения подписки add сервер apache БУДЕТ ПЕРЕЗАГРУЗИТЬ!,

Итак, мой вопрос: могу ли я как-нибудь вызвать exec, чтобы выполнить обе команды на стороне linux без потери второй команды?

Пример:

exec(("/wrapper2 3 --create ... && /wrapper2 4 --update-soa example.com ... ) > /dev/null 2>&1 );

Php отправит обе командыLinux, чтобы выполнить, или он перезапустит Apache после первой команды, а затем я не могу выполнить вторую команду?

Спасибо

Ответы [ 4 ]

2 голосов
/ 23 июня 2011

Хм ... Я думаю, плохая сделка.Как правило, плохой идеей для процесса является указание своему родителю перезапускаться, пока процесс должен продолжать работать.Но, даже если бы это была хорошая идея - Apache является родительским процессом PHP в этом контексте (делайте ps -A, вы не увидите PHP), я не могу себе представить, что это позволит вам перезапустить его ипродолжайте работать в одно и то же время.

Я бы подошел к этому так: если вы можете преодолеть задержку, то попросите задание cron определить, существует ли конкретный файл, если он существует, затем выполните команду twoчто вам это нужно.В худшем случае сделайте так, чтобы PHP вывел файл, содержащий две команды, которые вы хотите запустить, а затем cron запустил этот файл.

1 голос
/ 23 июня 2011

Ну, насколько я понимаю, проблема заключается в том, что Apache станет родителем скрипта, который запускается, когда Apache будет закрыт, так же как и скрипт.

Запрет, с которым вы можете иметь делосвоего рода установка derp-y, вы можете настроить задание cron, которое ищет, когда нужно перезапустить сервер (файл, созданный вами с помощью touch или что-то из PHP), который может обрабатывать все, что находится вне контекста процесса Apache..

Этакая грязная идея.(

0 голосов
/ 23 июня 2011

Поместите команды в сценарий оболочки и выполните этот сценарий. Это менее сложно и на всякий случай вы можете вызвать его с помощью других инструментов, а также при перезапуске apache или через cron.

0 голосов
/ 23 июня 2011

Я думаю, почему перезапуск apache - ваша команда выполняется слишком долго или стоит много системных ресурсов и заставляет подпроцесс apache завершаться.Попробуйте использовать режим fastcgi вместо mod_php.

Вы можете создать файл оболочки для выполнения двух команд.

...