Есть обычный текстовый документ count.txt. В нем записано число 10. Как с помощью PHP достать из файла число, прибавить к нему произвольное число в диапазоне от 0,1 до 0,6 и переписать файл (заменить 10 на получившееся число)?
Можно попробовать сделать таким образом, только если у вас в файле хранится только это одно число.
<?php
// открываем файл и считываем число строкой
$f = fopen("input.txt", "r");
$num = fgets($f);
// переводим строку в число
var_dump($num);
$num= (int)$num;
var_dump($num);
// прибавляем случайное число из диапазона [0.1,0.6]
$res = $num + rand(0.1, 0.6);
fclose($f);
// переоткрываем файл на запись с предварительной очисткой
$f = fopen("input.txt", "w+b");
// записываем результат в файл
fwrite($f,$res);
fclose($f);
?>
$add = 0.1;
$file = new SplFileObject("file.txt", 'r+');
if (!$file->flock(LOCK_EX)) { //блокировка файла
throw new Exception("Не удалось получить блокировку!");
}
$number = $file->fread($file->getSize()); //читаем содержимое
$number = (float) $number + $add; //складываем
$file->ftruncate(0); //обрезаем файл до 0 длины
$file->rewind(); //перемещаемся к началу файла
$file->fwrite($number); //записываем число
$file->flock(LOCK_UN); // снимаем блокировку
$file = null; //close file
file_put_contents('file.txt', (float) file_get_contents('file.txt')+0.1, LOCK_EX);
Здесь не учитывается блокировка при чтении файла, если скрипт выполняется в несколько потоков, могут возникнуть проблемы.
Также можно через обычные функции (fopen, fwrite), но примеров в интернете с этим решением тьма, поэтому описывать не буду. Первый вариант безопаснее для многопоточной записи, второй вариант проще.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день, есть такая Composer Библиотека паука spatie/crawler Я ее успешно установилНо не хватает ума правильно запустить самого паука, кто то может...
Нашел где пункты меню хранятся в базе, удалил один, теперь вместо него выводится текст: #0 (без названия)Как пункт удалить полностью?