Нужен файл, который будет добавлять в таблицу запись по таймеру. Так вот, каким образом можно это сделать? Знаю, что для этого можно использовать CronTab. В mysql и PHP особо не силен.
Вы можете сделать примерно следующее:
cron.php
cron.php
проверить текущее время и выполнить все необходимые действияМожно поступить немного иначе, определить интервалы в самом cron, а в скрипте PHP лишь выполнять определенные действия, связанные с конкретными интервалами. Я решил задачу периодического сбора погоды по филиалам (через каждые 3 часа) и ежемесячного расчета начислений (в начале каждого месяца) и написал что-то вроде этого:
<?php
require_once("include/include.inc.php");
if (!api_RunningInCli()) {
die('Script must be called only from CLI, exited');
}
if ($argc <= 1) {
die('No parameters, exited');
}
if ($argc > 1 && isset($argv[1])) {
$period = trim($argv[1]);
switch ($period) {
case 'hourly':
Cron::Hourly();
break;
case 'daily':
Cron::Daily();
break;
case 'weekly':
Cron::Weekly();
break;
case 'monthly':
Cron::Monthly();
break;
}
}
?>
В пользовательском классе Cron статически определены периоды в виде методов, внутри - произвольные действия.
Обратите внимание на то, что скрипт cron.php
ожидает в параметре указания периода, в моем случае это строки hourly/daily/weekly/monthly
, поставьте свою строку и свой период, если нужно.
Функция api_RunningInCli()
защищает скрипт от вызова через браузер, полезно в случае, если это возможно, определена довольно просто:
/* Возвращает true, если скрипт запущен из консоли */
function api_RunningInCli()
{
return PHP_SAPI == 'cli' || (!isset($_SERVER['DOCUMENT_ROOT']) && !isset($_SERVER['REQUEST_URI']));
}
На оригинальность даже не претендую.
Системный cron в данном случае настроим на периоды и параметр. Содержимое crontab -l
может быть примерно таким:
0 * * * * /path/cron.sh hourly > /dev/null 2>&1
0 0 * * * /path/cron.sh daily > /dev/null 2>&1
0 0 * * 1 /path/cron.sh weekly > /dev/null 2>&1
0 0 1 * * /path/cron.sh monthly > /dev/null 2>&1
Хорошо видно настройку периодов cron, абсолютный путь до скрипта SHELL и параметр скрипта. Отдельный скрипт SHELL делать не обязательно, внутри него все крайне просто:
#!/bin/bash
cd /var/www/html
php ./cron.php $1
Я сделал скрипт SHELL для того, чтобы было удобно переносить cron.php и вызывать сразу несколько подобных cron.php для всех проектов на одном сервере. Можете от него отказаться без всяких проблем и писать что-то вроде
0 * * * * php /var/www/html/cron.php hourly > /dev/null 2>&1
в crontab.
Разобрался сам. Запускаю cron.php /usr/bin/wget -O /dev/null http://site.ru/cron/cron.php
. Создал два файла - cron.php и config.php. config.php - файл конфигурации, cron.php - исполняющий указанный код.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пользователям из интерфейса предлагается выбрать отступы для окна:
Благодаря VladD, который ответил мне в прошлый раз здесь - Проигрывание анимации из фонового потока , а также куче различных тем на других форумах,...