Я написал код ниже, на данный момент я тестирую, поэтому в коде нет запросов к базе данных.filesize() всегда читает 0 байтов, хотя размер файла не равен 0 байтам
Код ниже, где указано if(filesize($filename) != 0)
, всегда относится к else
, хотя файл не является 0 байтами и содержит 16 байтов данных. Я ничего не получаю, всегда кажется, что файл равен 0 байтам.
Я думаю, что легче показать мой код (могут быть другие ошибки там, но я проверяю каждую ошибку, когда я иду, имея дело с ними один за другим). Я не получаю никаких ошибок PHP или чего-то еще.
$filename = 'memberlist.txt';
$file_directory = dirname($filename);
$fopen = fopen($filename, 'w+');
// check is file exists and is writable
if(file_exists($filename) && is_writable($file_directory)){
// clear statcache else filesize could be incorrect
clearstatcache();
// for testing, shows 0 bytes even though file is 16 bytes
// file has inside without quotes: '1487071595 ; 582'
echo "The file size is actually ".filesize($filename)." bytes.\n";
// check if file contains any data, also tried !==
// always goes to else even though not 0 bytes in size
if(filesize($filename) != 0){
// read file into an array
$fread = file($filename);
// get current time
$current_time = time();
foreach($fread as $read){
$var = explode(';', $read);
$oldtime = $var[0];
$member_count = $var[1];
}
if($current_time - $oldtime >= 86400){
// 24 hours or more so we query db and write new member count to file
echo 'more than 24 hours has passed'; // for testing
} else {
// less than 24 hours so don't query db just read member count from file
echo 'less than 24 hours has passed'; // for testing
}
} else { // WE ALWAYS END UP HERE
// else file is empty so we add data
$current_time = time().' ; ';
$member_count = 582; // this value will come from a database
fwrite($fopen, $current_time.$member_count);
fclose($fopen);
//echo "The file is empty so write new data to file. File size is actually ".filesize($filename)." bytes.\n";
}
} else {
// file either does not exist or cant be written to
echo 'file does not exist or is not writeable'; // for testing
}
В основном код будет на странице списка участников, который в настоящее время извлекает всех членов и подсчитывает, сколько участников зарегистрировано. Точка в скрипте, если время меньше 24 часов, мы читаем member_count из файла else, если прошло 24 часа или более, мы запрашиваем базу данных, получаем кол-во членов и записываем новую цифру в файл, чтобы уменьшить запросы на Страница участника.
Update 1:
Этот код:
echo "The file size is actually ".filesize($filename)." bytes.\n";
всегда выводит ниже, даже если это не 0 байт.
Размер файла на самом деле составляет 0 байт.
также попытался
var_dump (filesize($filename));
Выходы:
Int (0)
сделали вы проверили 'var_dump (Filesize ($ файла));'? показать нам –
@Anant я получаю: int (0) приветствия. – PHPLOVER
@apokryfos У меня нет этого кода в моем скрипте, не уверен, что вы имеете в виду здесь, весь скрипт выше. Обновлено сообщение с дополнительной информацией. Приветствия. – PHPLOVER