Кто-либо знает, где найти некоторых демонов в качестве примера?

Существует, довольно многие - ищут любые совместимые serice продукты управления ITIL, хотя они - возможно излишество и дорогой. Я нашел, что Wiki приближается к простому способу, по крайней мере, сделать запуск на вещах как более предписывающие продукты до такой степени, что команды не потрудились совершенствовать их.

0
задан 3 September 2010 в 03:13
2 ответа

Демон обычно определяется как продолжительная задача, которая работает в 'фоне', не под прямым управлением пользователя. Программисту, который в основном имеет в виду:

  1. это имеет цикл, который, вероятно, имеет некоторую задержку, или ожидайте на нем так, это закончит тем, что было 'продолжительно'. Так помещение a while (!file_exist("/tmp/mydaemon_killswitch")) { перед кодом и sleep($timeperiod); } после того, как код, в некотором смысле, сделает это демоном.

  2. это делает 'ветвление прочь и умирает' для разъединения с tty. Обратите внимание, что другой способ моделировать это от командной строки состоит в том, чтобы войти в систему, сделайте 'nohup $yourprog и' и затем выйдите из системы. $yourprog не умрет, но управление tty уйдет, и это будет продолжать бежать в 'фоне'.

0
ответ дан 5 December 2019 в 17:34

должен соединиться с базой данных MYSQL, чтобы видеть, пора ли (или в прошлый раз) выполнить извлечение ftp

Почему, не используя простой cronjob для этой задачи? этим путем можно все еще сделать его в php, это не выполнило бы полный рабочий день, но вместо этого планировать на время, которое Вы хотите cronjob и вероятно сохранили бы Вас ресурсы.

Из руководства php.net:

<?php

$pid = '/tmp/my_code_pid';
if (file_exist("$pid")) { # to prevent your code from running 
    echo "Proccess already running.";# when another instance is already running
    exit;
}

touch($pid); # create the pid file

// define some variables
$local_file = 'local.zip';
$server_file = 'server.zip';

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
    echo "Successfully written to $local_file\n";
} else {
    echo "There was a problem\n";
}

// close the connection
ftp_close($conn_id);

// Do your mysql things

unlink("$pid") if (file_exist("$pid")); # erase the pid file once the runtime is complete
?>

Теперь заставить Ваш cronjob управлять для выполнения каждые 5 минут, например:

*/5 * * * * /usr/bin/php /home/my_user/my_code.php 1> /dev/null

Примечание: Использовать whereis php удостоверяться в Вашем пути php

Для установки вышеупомянутого расписания, сделайте:

crontab -e

После того как это вводит редактора (предполагающий, что Ваш редактор по умолчанию VI), введите:

:$ и нажмите ENTER, это переместит Вас в последнюю строку файла

o получит Вас в текстовом режиме для следующей строки, которая будет новой строкой

esc заставит Вас выйти из текстового режима, таким образом, можно сохранить файл

:wq и нажмите ENTER, сохранит и выйдет из редактора

:q! и нажмите ENTER, если Вы сделали ошибку, которая выйдет, не сохраняя изменения.

0
ответ дан 5 December 2019 в 17:34

Теги

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