DANFA

Аналог CRON на PHP

Здравствуйте. Хочу сделать свой CRON на чистом PHP, чтобы выполнялись определенные скрипты, без крона сервера.
Я знаю, что такое можно сделать, где-то читал, как это делается, но, сейчас не могу найти ту статью...
Помогите с реализацией Крона на PHP, пожалуйста.
Спасибо.
У меня движок не использует серверный Крон, для этого разработчики движка написали класс "phpfox_cron". Крон движка работает за счет посещений сайта людьми или ботами. При каждом обращении к сайту, сценарий проверяет таблицу "phpfox_cron", сравнивает поля время последнего выполнения установленной задачи и период выполнения (30 минут, 1 час, день, сутки, неделя, месяц, и так далее). Если сравнение возвращает время с момента последнего выполнения задачи больше, чем установленный период, то Крон выполнит задачу, и обновит время последнего выполнения.

Надеюсь, объяснил понятно.
Можно глянуть Ваш класс Крона?
Спасибо.
Если Вам в качестве примера, то вот:
<?php
class phpfox_cron
{
	private $crons = [];
	private $cache = null;

	public function __construct()
	{
		$this->cache = phpfox::getLib('cache');
		$cacheId     = $this->cache->set('cron');
		if (!($this->crons = $this->cache->get($cacheId)))
		{
			$rows = phpfox::getLib('database')
				->select('cron.*')
				->from(phpfox::getT('cron'), 'cron')
				->join(phpfox::getT('product'), 'product', 'product.product_id = cron.product_id AND product.is_active = 1')
				->join(phpfox::getT('module'), 'm', 'm.module_id = cron.module_id AND m.is_active = 1')
				->where('cron.is_active = 1')
				->execute('getSlaveRows');

			foreach ($rows as $row)
			{
				$this->crons[$row['cron_id']] = $row;
			}

			$this->cache->save($cacheId, $this->crons);
		}
	}

	public function exec($id = null)
	{
		if (is_bool($this->crons))
		{
			return false;
		}

		if ($id && isset($this->crons[$id]))
		{
			eval($this->crons[$id]['php_code']);

			$this->_update($this->crons[$id]['cron_id'], $this->_getNextRun($this->crons[$id]['type_id'], $this->crons[$id]['every']));
		}
		else
		{
			foreach ($this->crons as $cron)
			{
				if ($cron['next_run'] < PHPFOX_TIME)
				{
					eval($cron['php_code']);

					$this->_update($cron['cron_id'], $this->_getNextRun($cron['type_id'], $cron['every']));
				}
			}
		}
	}

	// Через какое время выполнять задание Cron
	// (1: Минуты) (2: Часы) (3: Дни) (4: Месяца) (5: Годы)
	private function _getNextRun($type, $every)
	{
		switch ($type)
		{
			case 1: // Минуты
				$time = ($every * CRON_ONE_MINUTE);
			break;

			case 2: // Часы
				$time = ($every * CRON_ONE_HOUR);
			break;

			case 3: // Дни
				$time = ($every * CRON_ONE_DAY);
			break;

			case 4: // Месяца
				$time = ($every * CRON_ONE_MONTH);
			break;

			case 5: // Годы
				$time = ($every * CRON_ONE_YEA);
			break;
		}

		return ($time + PHPFOX_TIME);
	}

	private function _update($id, $time)
	{
		phpfox::getLib('database')->update(phpfox::getT('cron'), [
				'next_run' => $time,
				'last_run' => PHPFOX_TIME
			], 'cron_id = ' . (int) $id
		);

		$this->cache->remove('cron');
	}
}

И таблица:
Аналог CRON на PHP