У меня все хранится по файлам.
Данные представляют собой массив.
В файл сохраняются с помощью serialize() вот так:
if(is_file($file_path.'.txt')) {
$fp = fopen($file_path.'.txt', "a+");
flock($fp, LOCK_EX);
$data_str = fread($fp, filesize($file_path.'.txt'));
$counter_arr = unserialize($data_str);
$counter_arr_new = $this->process($counter_arr);
$data_str_new = serialize($counter_arr_new);
ftruncate($fp, 0);
fwrite($fp, $data_str_new);
fflush($fp);
flock($fp, LOCK_UN);
fclose($fp);
}
else {
$fp = fopen($file_path.'.txt', "a+");
flock($fp, LOCK_EX);
$counter_arr_new = $this->process(array());
$data_str_new = serialize($counter_arr_new);
ftruncate($fp, 0);
fwrite($fp, $data_str_new);
fflush($fp);
flock($fp, LOCK_UN);
fclose($fp);
}
В коде $this->process() есть только одна проверка
if(count($arr)>100) {
unset($arr[0]);
$arr = array_values($arr);
}
И вот значит захожу я в файл и вижу что в нем 2 значения, а было то 100.
Как так получилось что файл каким то образом стерся или стерся массив?
Размер файла примерно 25 мб, файлов одновременно может открываться несколько.
Как бы вроде как гдето в пхп есть ограничение на оперативную память и вполне возможно что открылось несколько файлов одновременно и память закончилась, но это все размышления, а нужна конкретика.