Здравствуйте,
Я написал небольшой эксперимент на PHP.Этот скрипт подсчитывает, сколько раз пользователь нажал кнопку, помеченную определенным классом (id = "link_1", class = "heart")
Во время каждого клика скрипт читает текстовый файл, находит правильный идентификатор, затем добавляет +1 к номеру этого идентификатора, вот так:
#counte_me.php
$file = 'count_me.txt'; // stores the numbers for each id
$fh = fopen($file, 'r+');
$id = $_REQUEST['id']; // posted from page
$lines = '';
while(!feof($fh)){
$line = explode('||', fgets($fh));
$item = trim($line[0]);
$num = trim($line[1]);
if(!empty($item)){
if($item == $id){
$num++; // increment count by 1
echo $num;
}
$lines .= "$item||$num\r\n";
}
}
fclose($fh);
file_put_contents($file, $lines, LOCK_EX);
Результат
# count_me.txt
hello_darling||12
Это прекрасно работает.Проблема возникает, когда время от времени я смотрю на пустой count_me.txt!
Не совсем знаю, когда и как это происходит, но это так.Я начинаю делать приращения и происходит, иногда раньше, иногда намного позже.Это может быть на моем пути к 10 или к 200 или к 320 или что-нибудь между ними.Это совершенно случайно.
Сводит меня с ума.Я не достаточно опытен, но именно поэтому я играю с этой штукой.
Кто-то знает, что я делаю не так, чтобы файл так выгружался?
ОБНОВЛЕНИЕ 1 Пока предложение Олувафеми Суле работает, но я должен удалить LOCK_EX из file_put_contents, чтобы он работал, иначе он просто не работает.
// NEW LINE ADDED
if (!empty($lines)) {
file_put_contents($file, $lines);
}