Хранение скриптов последнего времени выполнения в PHP - PullRequest
2 голосов
/ 17 декабря 2010

Мне нужно сохранить время последнего запуска скрипта, чтобы убедиться, что он не читает старые элементы (в этом случае твиты).Какой лучший способ отследить это?

спасибо.

Ответы [ 5 ]

2 голосов
/ 17 декабря 2010

Какой лучший способ отследить это?

Лучший способ - отследить это в памяти (redis / apc / memcached / etc) (резервное копирование любымпостоянное хранилище (mysql / mongodb / redis / и т. д.). Следует стараться не прикасаться к диску (I / O), потому что это очень очень медленно по сравнению со скоростью памяти.

Redis

Вы можете настроить redis двумя способами:

  • записать данные обратно в постоянное асинхронно (моментальный снимок) после того, как прошло определенное время и или ключи были изменены.
  • немедленно записать данные обратно в постоянное хранилище(только для добавления).

Это компромисс (производительность и безопасность)

APC / Memcached

У APC и Memcached нет постоянного хранилища, поэтомуВы должны сделать это, например, с помощью mysql.

2 голосов
/ 17 декабря 2010

Создайте временную метку и сохраните ее в файле журнала, который можно прочитать на следующей итерации.

$time_ran = time();

function saveTimeRan(){
  $fh = fopen('/path/to/a/new/log' 'w+');
  fwrite($fh, $time_ran);
  fclose($fh);
}

function getTimeRan(){
  $fh = fopen('/path/to/a/new/log' 'r+');
  $time = fgets($fh);
  fclose($fh);
  return $time;
}

Могу ли я предложить вам сделать это объектом и поместить содержимое saveTimeRan в волшебную функцию __destruct,поэтому, когда ваш объект GC'ed, это сэкономит время.Просто предложение.Вы можете поместить свои функции твита в другие методы объекта и создать один всеобъемлющий интерфейс.Вы также можете сохранить значение в поле базы данных и вызывать его каждую итерацию.

2 голосов
/ 17 декабря 2010

Вы дали ноль информации о специфике, поэтому я буду общим.

  1. Сохраните его в базе данных, такой как MySQL
  2. Запишите его в локальный файл с file_put_contents() и прочитайтеfile_get_contents()
  3. Коснитесь локального файла одной из функций os, а затем просмотрите его, чтобы увидеть, что он mtime
  4. . Используйте sqlite, чтобы записать его в локальную базу данных
0 голосов
/ 17 декабря 2010

Вы можете сделать так, чтобы скрипт записывал метку времени / дату в текстовый файл при каждом запуске.Затем вы можете при желании прочитать файл перед запуском сценария, чтобы убедиться, что вы не запустите его снова до истечения времени x или запустите его только при выполнении определенного условия.

Извлечение file_put_contents и file_get_contents .

-Ryan

0 голосов
/ 17 декабря 2010

Вы можете хранить метки времени в БД или текстовом файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...