Задать вопрос
@lordning999

Linux скрипт для php, как написать?

Всех приветствую. Подскажите, как написать скрипт для Linux.

1. Есть файлик name.txt - в нем содержаться id
2. Мне нужно чтобы скрипт работал в фоновом режиме (как запустить его)
3. Как сделать чтобы он брал каждый раз id с файлика, и выполнял php с этим id (GET запросом)
4. Если ошибок нет, удаляем с файлика текущий id (строку с этим id) и берем новый
5. Если в файлике закончились id, завершаем работу скрипта, и больше чтобы он не запускался

Подскажите, как реализовать это.
  • Вопрос задан
  • 303 просмотра
Подписаться 2 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 3
Zoominger
@Zoominger
System Integrator
Мне нужно чтобы скрипт работал в фоновом режиме (как запустить его)

Cron.

Как сделать чтобы он брал каждый раз id с файлика, и выполнял php с этим id (GET запросом)

PHP fopen().

Подскажите, как реализовать это.

Покажите код, который у вас есть. Если кода нет, то идите на биржу фриланса и там вам "помогут" за определённую сумму.
Ответ написан
@qxcoder
---
Linux скрипт тебе тут вообще не нужен, просто делай всё на уровне PHP.
Потом, когда скрипт работает корректно добавляешь его в cron. Profit.
Использование очередей для такой мелкой задачи не имеет смысла.
Ответ написан
У меня много демонов крутится на PHP и между собой они общаются обычно через RabbitMQ (один другому задания шлет), запуск демона происходит вот так

#!/bin/bash
s_path="/bot1/sms/"
PIDFILE=$s_path"daemon.pid"

RUN="setsid /bin/php  /bot1/sms/daemon.php -a -b -c 10"
LOG=$s_path"log.txt"
SERVICE_NAME="MY DAEMON PHP"



s_start() {

test -f $PIDFILE && echo "$SERVICE_NAME is started" && exit

echo -n "Starting $SERVICE_NAME: "
`$RUN > $LOG & echo $! > $PIDFILE & disown -a` && echo 'ok' || echo 'error'

}

s_stop() {
test -f $PIDFILE || echo "$SERVICE_NAME isn't started"
test -f $PIDFILE || exit

echo -n "Stopping $SERVICE_NAME: "
kill -9 $(cat $PIDFILE) && echo 'ok' || echo 'error'
rm $PIDFILE
}


case $@ in
     start)
          s_start
          ;;
     stop)
          s_stop
          ;;
     restart)
          s_stop
          s_start
          ;;
     *)
        echo "Use start|stop|restart"
        ;;
esac


В скрипте прописан путь до папки с демоном, туда при старте записывается pid процесса, по этому pid процесс убивается, конечно это такое решение для скрипта, как молотком по голове, ну ничего критичного не делается обычно, если убит скрипт и не успел что-то доделать, то при следующем старте доделает...
Весь выхлоп скрипта в лог закидывается, но можно и в /dev/null отправить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы