Как проверить, работает ли сценарий PHP все еще

Если аббревиатуры на английском языке приемлемы, R имеет встроенный постоянный вектор month.abb имен сокращенного месяца. Просто используйте цифровую дату, чтобы индексировать этот вектор сокращенных имен месяцев. Например, использование фиктивных данных:

set.seed(1)
df <- data.frame(A = runif(10), Month = sample(12, 10, replace = TRUE))

здесь несколько опций для индексации month.abb через Month:

> with(df, month.abb[Month])
 [1] "Mar" "Mar" "Sep" "May" "Oct" "Jun" "Sep" "Dec" "May" "Oct"
> df <- transform(df, MonthAbb = month.abb[Month])
> df
            A Month MonthAbb
1  0.26550866     3      Mar
2  0.37212390     3      Mar
3  0.57285336     9      Sep
4  0.90820779     5      May
5  0.20168193    10      Oct
6  0.89838968     6      Jun
7  0.94467527     9      Sep
8  0.66079779    12      Dec
9  0.62911404     5      May
10 0.06178627    10      Oct
5
задан Anant Singh---Alive to Die 5 June 2015 в 19:09
поделиться

6 ответов

Просто добавьте вторую команду после сценария. Когда/если это останавливается, вторая команда вызывается. Например:

php daemon.php 2>&1 | mail -s "Daemon stopped" you@example.org

Править:

Технически, это вызывает почтовую программу сразу же, но только завершает команду, когда сценарий PHP заканчивается. Выполнение этого получает вывод сценария PHP и включает в почтовое тело, которое может быть полезно для отладки, что заставило сценарий останавливаться.

4
ответ дан 18 December 2019 в 05:50
поделиться

Простой сценарий удара

#!/bin/bash
while [true]; do
    if ! pidof -x script.php;
    then
        php script.php &
    fi
done
2
ответ дан 18 December 2019 в 05:50
поделиться

Не для окон, но...

У меня есть несколько продолжительных Сценариев PHP, которые имеют сценарий оболочки, переносящий его. Можно дополнительно возвратить значение из сценария, который будет проверен в сценарии оболочки, чтобы выйти, сразу перезапустить, или сон в течение нескольких секунд - и затем перезапустить.

Вот простой, который просто продолжает управлять Сценарием PHP, пока он вручную не останавливается.

#!/bin/bash
clear
date
php -f cli-SCRIPT.php
echo "wait a little while ..."; sleep 10
exec $0

"Исполнительные 0$" перезапускают сценарий, не создавая подпроцесс, который должен будет распутать позже (и поднять ресурсы тем временем). Этот сценарий удара переносит почтового отправителя, таким образом, это не проблема, если он выходит и паузы на мгновение.

2
ответ дан 18 December 2019 в 05:50
поделиться

Одно возможное решение состоит в том, чтобы иметь его, слушают на порте с помощью функций сокета. Можно проверить, что сокет все еще слушает с простым сценарием. Даже контрольный сервис как pingdom мог контролировать свое состояние. Если это умирает, сокет больше не слушает.

Много решений..Удачи.

0
ответ дан 18 December 2019 в 05:50
поделиться

Если у Вас есть руки на сценарий, можно просто попросить, чтобы он установил временную стоимость каждые X раз в дб и затем позволил заданию крона проверить, актуально ли то значение.

0
ответ дан 18 December 2019 в 05:50
поделиться

troelskn записал:

Просто добавьте вторую команду после сценария. Когда/если это останавливается, вторая команда вызывается. Например:

php daemon.php | mail -s "Daemon stopped" you@example.org

Это будет звонить mail каждый раз строка печатается в daemon.php (который никогда не должен быть, но все еще.)

Вместо этого используйте двойной оператор амперсанда для разделения команд, т.е.

php daemon.php & mail -s "Daemon stopped" you@example.org
0
ответ дан 18 December 2019 в 05:50
поделиться
Другие вопросы по тегам:

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