Запуск исполняемых файлов

HEPB

Постоялец
Регистрация
24 Июн 2009
Сообщения
111
Реакции
8
Подскажите, плиз, как можно из php запустить исполнимые файлы (которые начинаются с диррективы #!/bin/bash)?
Есть исполнимые файлы, которые лежат в /var/etc и они запускаются по крону раз в 10 мин, что грузит сайт.
Надо убрать их запуск с крона, а запускать через php? когда пользователь, например что-то изменил в своих данных - в этом случае они должны отработать.
Сами php файлы лежат в подкаталогах /var/www/...
Исполнимые файлы - /var/etc/
Возможно ли их запустить в php?
 
А что будет если зайдут 10-20 пользователей одновременно и запустят скрипт по событию?
Если один исполняемый файл так напрягает систему, что что будет когда их запустится 10? Сайт умрёт?

В /var/etc/ нужно будет прописать права для пользователя под которым крутится php, чтобы можно было беспрепятственно воспользоваться вышеупомянутыми функциями. Но! Это не желательно, т.к. это есть потенциальная дырка в безопасности.
 
не, скрипты надо выпонять только когда пользователь купит что-то. А это происходит крайне редко, услуга покупается на месяц вперед как правило и потом уже пользователю уже не нужно что либо запускать.
Насчет дырки тоже так подумал. А может другой вариант попробовать?
Скажем пользователь прописывает в таблицу флаг, что надо обновить.
В кроне надо сделать просмотр этой таблицы и если флаг стоит, то запустить эти shell-скрипты. Крон будет раз в 5 минут читать эту таблицу и если флаг не выставлен - ничего не делать. Так вроде не будет тормозов?
Только вот как в shell-скрипте обратиться к таблице и если флаг стоит выполнить другой shell-скрипт?
Буду благодарен за какие-либо примеры.
 
зачем заморачиваться с базой?
выставляете файл-флаг в файловой системе. к примеру: /tmp/run_update_54454356, где 54454356 - ID юзера. А скриптом своим, который производит обновление смотрите если есть флаги - отрабатываем, нет - умираем. И пусть себе крутится в кроне.
Только обязательно учтите конкуретный доступ, если будет паралельный запуск скриптов.
 
  • Нравится
Реакции: HEPB
то есть в php просто создавать файл?
Мне даже не важно какой пользователь инициировал запуск.
Подскажите тогда пример как в shell скрипте посмотреть существует ли файл, может считать с него строки (с тексотового файла), удалить файл.
Опять же сложность, если все пользователи будут создавать один и тот же файл, то может получиться, что php создать его не сможет или shell - скрипт его удалить.
А если как вы предлагаете к имени файла приплюсовать id пользователя, то как просматривать такой файл shell-скриптом? Как имя файла в shell-скрипте получить? Просматирвать id юзеров, опять же доступ к базе нужен.
 
не, не понял.
надо смотреть в скрипте, который вызывает программу.
так вызывает прогу как раз таки cron, он запускает shell-скрипт
 
Узнать существует ли файл в shell:
Код:
#!/bin/sh
 
if [ -f filename ]
then
  echo Cool
else
  echo sucks
fi

Если не надо, чтобы несколько раз запускался скрипт выставляешь еще один файл-флаг на то, что скрипт уже работает. Ну вот как-то так...
 
  • Нравится
Реакции: HEPB
Назад
Сверху