Существует, довольно многие - ищут любые совместимые serice продукты управления ITIL, хотя они - возможно излишество и дорогой. Я нашел, что Wiki приближается к простому способу, по крайней мере, сделать запуск на вещах как более предписывающие продукты до такой степени, что команды не потрудились совершенствовать их.
Демон обычно определяется как продолжительная задача, которая работает в 'фоне', не под прямым управлением пользователя. Программисту, который в основном имеет в виду:
это имеет цикл, который, вероятно, имеет некоторую задержку, или ожидайте на нем так, это закончит тем, что было 'продолжительно'. Так помещение a while (!file_exist("/tmp/mydaemon_killswitch")) {
перед кодом и sleep($timeperiod); }
после того, как код, в некотором смысле, сделает это демоном.
это делает 'ветвление прочь и умирает' для разъединения с tty. Обратите внимание, что другой способ моделировать это от командной строки состоит в том, чтобы войти в систему, сделайте 'nohup $yourprog и' и затем выйдите из системы. $yourprog не умрет, но управление tty уйдет, и это будет продолжать бежать в 'фоне'.
должен соединиться с базой данных MYSQL, чтобы видеть, пора ли (или в прошлый раз) выполнить извлечение ftp
Почему, не используя простой cronjob для этой задачи? этим путем можно все еще сделать его в php, это не выполнило бы полный рабочий день, но вместо этого планировать на время, которое Вы хотите cronjob и вероятно сохранили бы Вас ресурсы.
<?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, если Вы сделали ошибку, которая выйдет, не сохраняя изменения.