Выполнение вычисления 1 раз за период времени, как реализовать?
Добрый день!
Есть такая задача - выполнять снятие данных 1 раз, например в неделю, и пополнять ими массивы ( не заменять значения, а создавать новые значения в массиве).
Как можно реализовать вычисление, например раз в неделю, чтобы в остальное время при выполнении общего сценария вычисление не производилось?
Если что-то не так написал, скажите, я объясню более подробно. Спасибо
Сделайте по типу кэша. Делаете вычисления, записываете в файл, ставите проверку на время(неделя) записываете данные в файл, проверяете время создания файла
Дмитрий, пробую, пока смотрю функцию записи в файл и что-то не получается. Что здесь может быть не так?
1 раз создал файл, записал и больше ничего не делает.
$new_str = 'New line of text.';
$filename = 'graph/file.txt';
$text = file_get_contents($filename);
file_put_contents($filename, $new_str . PHP_EOL . $text);
Что здесь не так, подскажите?..я стер этот первый файл, больше не записывает.
Можно более упрощенную конструкцию использовать, но и она не записывает
$text = 'New line of text.';
$filename = 'graph/file.txt';
file_put_contents($filename, $text);
Askfortrue, может быть что угодно, может быть не создан каталог graph или права на запись не стоят, может путь не верный, лучше всего использовать константы __DIR__ тогда путь точно будет верный
Дмитрий, тут путь был неверный, __DIR__ помогло!
А по поводу вычислений через промежуток времени, здесь Битрикс, все то же кешируется.
Сделал через файл, в котором время записывается предыдущего вычисления. Поставил нужный промежуток вычисления по этому файлу. Благодаря этому таймеру не записываются новые значения при перезагрузках и обновлениях кеша по каким-либо причинам.
Синхронизировал с кешем на битрикс, все равномерно пишет, благо надо раз в месяц снимать "показания".
В cron не полез..