Создаем фоновый php скрипт под Linux .демон на php (Rating: +2)
Создаем фоновый вечно работающий php скрипт в Linux (Демон на php).
Демоны - процессы, работающие в фоновом режиме.
Для нужд проекта нужно было написать программу которая будет
в фоновом режиме каждых 30с. проверять нужные параметры и рассылать уведомления пользователям.
Функция проверки запущен ли уже процесс в linux:
1. создаем *.php, пишем туда такие строчки:
То есть проверит запущен ли уже процесс текущего файла
и в случае если процесс не найден выполнит нужный нам код. Иначе - получим соощение об ошибке.
2. добавляем в крон созданный скрипт с интервалом запуска в 10мин.
В итоге получим одиночный вечноработающий процесс скрипта.
Применения могут быть самые разнообразные: от проверки доступности сайта (uptime) до различных парсеров, кэширования сайта.
Added: Богдан
24.08.2011 / 01:36Демоны - процессы, работающие в фоновом режиме.
Для нужд проекта нужно было написать программу которая будет
в фоновом режиме каждых 30с. проверять нужные параметры и рассылать уведомления пользователям.
Функция проверки запущен ли уже процесс в linux:
<? /** * Проверка на повторный запущенный процес в LINUX * В случае если процесс запущен второй раз функция возвращает TRUE иначе FALSE * пример: is_running_process('test.php'); * Author: GANJAR * ICQ: 993770 Site: http://mytu.ru * * * @example is_running_process($process_name); * * @param string $process * @return bool */ function is_running_process($process){ exec( 'ps axw | grep -v grep | grep '.escapeshellarg($process), $output); $enabled = false; foreach($output as $process_line) { if (preg_match('!\d+\s+(\d|\?)+\s+[S|I|R|N]+\s+!i', $process_line)) { if($enabled){ return TRUE; } $enabled = true; } } return FALSE; } ?>Пример использования:
1. создаем *.php, пишем туда такие строчки:
#!/www/php/services/php -q <?php set_time_limit(0); //---------------------------// Some Function /** * Проверка на повторный запущенный процес в LINUX * В случае если процесс запущен второй раз функция возвращает TRUE иначе FALSE * пример: is_running_process('test.php'); * Author: GANJAR * ICQ: 993770 Site: mytu.ru * * * @example is_running_process($process_name); * * @param string $process * @return bool */ function is_running_process($process){ exec( 'ps axw | grep -v grep | grep '.escapeshellarg($process), $output); $enabled = false; foreach($output as $process_line) { if (preg_match('!\d+\s+(\d|\?)+\s+[S|I|R|N]+\s+!i', $process_line)) { if($enabled){ return TRUE; } $enabled = true; } } return FALSE; } //---------------------------// Run if(!is_running_process(basename(__FILE__))){ while(TRUE){ //Нужные действия echo "Run program from mytu.ru \nsleep 30s - date ".date('Y-m-d H:i')."\n"; sleep(30); } } else { echo "Error. ".basename(__FILE__)." running\n"; } ?>Строка
<?if(!is_running_process(basename(__FILE__)))?>- не допустит клонирования процесса.
То есть проверит запущен ли уже процесс текущего файла
и в случае если процесс не найден выполнит нужный нам код. Иначе - получим соощение об ошибке.
2. добавляем в крон созданный скрипт с интервалом запуска в 10мин.
В итоге получим одиночный вечноработающий процесс скрипта.
Применения могут быть самые разнообразные: от проверки доступности сайта (uptime) до различных парсеров, кэширования сайта.
Rating:
+2
Views: 4854Comments (2) »