Запуск скриптов по расписанию без крона

Статус
В этой теме нельзя размещать новые ответы.

aszxc

Создатель
Регистрация
1 Апр 2007
Сообщения
38
Реакции
1
Как запускать пхп скрипты по расписания БЕЗ ИСПОЛЬЗЫВАНИЯ КРОНА?
 
  • Заблокирован
  • #2
Как запускать пхп скрипты по расписания БЕЗ ИСПОЛЬЗЫВАНИЯ КРОНА?
1. Использовать сервисы внешнего крона
2. Кроном с другого сервера
3. Кроном со своего компа
4. Если позволяет хостер, то написать скрипт с set_time_limit(0), там по while(1) проверять время и дёргать через file_get+contents
 
1. Использовать сервисы внешнего крона
2. Кроном с другого сервера
3. Кроном со своего компа
4. Если позволяет хостер, то написать скрипт с set_time_limit(0), там по while(1) проверять время и дёргать через file_get+contents
Первые 3 варианта не подходят.set_time_limit(0) ничего не дает.
там по while(1) проверять время и дёргать через file_get+contents
про это можно поподробнее)
 
5. Если расписание не нужно идеально точным или на сайте много посетителей, то запуск крон задачи можно повесить на index.php.
 
5. Если расписание не нужно идеально точным или на сайте много посетителей, то запуск крон задачи можно повесить на index.php.
Скрипт должен запускаться раз в 30-40 минут(ориентировочно) такую точность возможно обеспечить? Если да,выложите пожалуйста решение.
 
  • Заблокирован
  • #6
Первые 3 варианта не подходят.set_time_limit(0) ничего не дает.
про это можно поподробнее)
Если set_time_limit(0) ничего не даёт, то подробнее можно не описывать. Лучше воспользуйся советом из следующего поста.
 
Как сделано напримр в TbDev
PHP:
function autoclean() {
	global $autoclean_interval, $rootpath;

	$now = time(); // получаем текущее время
	$docleanup = 0;

	$res = sql_query("SELECT value_u FROM ".TABLE_AVPS." WHERE arg = 'lastcleantime'"); // запрашиваем время последнего запуска
	$row = mysql_fetch_array($res);
	if (!$row) { // если нет записи вообще то создаем и выходим (первый запуск)
		sql_query("INSERT INTO ".TABLE_AVPS." (arg, value_u) VALUES ('lastcleantime',$now)");
		return;
	}
	$ts = $row[0];  // выбираем время предыдущего запуска из строки
	if ($ts + $autoclean_interval > $now) // проверяем наступило ли время следущего запуска
		return;
	sql_query("UPDATE ".TABLE_AVPS." SET value_u = $now WHERE arg = 'lastcleantime' AND value_u = $ts"); // обновляем время последнего запуска
	if (!mysql_affected_rows())
		return;
// ниже собственно сами функции которые надо выполнить по расписанию
	require_once($rootpath . 'include/cleanup.php');

	docleanup();
}

Точность зависит от количества поситителей.
Если пользователи заходят хотябы раз в минуту, то скрипт не хуже крона
А если например за ночь посетителей не будет часа два то 40 минутный интервал будет пропущен.
 
4. Если позволяет хостер, то написать скрипт с set_time_limit(0), там по while(1) проверять время и дёргать через file_get+contents
Ога, и повесить проц, чтобы сначало все тормозило, а затем отключили за перегрузку.
Либо, если подойдет проверяйте с каждым посетителем время, и если пора, и выполняйте обновление. Либо, как уже писали, используйте внешний вызов по расписанию.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху