У вас непарное количество открывающих и закрывающих фигурных скобок.
xreservederror - это константа? А это
$GLOBALS[xreservederror] что такое?
hexdec($i) я бы заменил на intval($i,16). Но hexdec('ff') вообще заменил бы на 255.
Создали бы переменную
$fileName = './db/'.$pre.dechex($i).'.list'
Вот этот кусок:
if($i<16)
$pre=0;
if(!file_exists('./db/'.$pre.dechex($i).'.list'))
mkfile('./db/'.$pre.dechex($i).'.list');
Если $i>=16, то переменной $pre не будет.
Как указал
27cm, это что-то странненькое.
if($i>hexdec('ff')){
return false;
$GLOBALS[xreservederror].='<t>[u01] Database is full.</t>';
break;
}
Вот этот кусок:
$data.=str_repeat(' ', $size);
$data=substr($data, $size);
Я так понимаю, вы берете некоторую строку и увеличиваете её длину на $size, а потом берете фрагмент получившейся строки отступив $size с начала строки. Я тут вижу много входных данных, которые приведут к созданию файла заполненного пробелами.
Было бы легче вам подсказать по коду, если бы вы объяснили что он делает, написали комментарии к некоторым мутным кускам кода, а также объяснили к чему в вашем вопросе тэг
Базы данных.
---------------
UPD
О! Спасибо что откомментировали код, и стало немного яснее. Я понял ваш вопрос.
Вы хотите забабахать свое хранилище данных, на файловой системе. Объемы будут в районе 3ГБ.
---------
Я вам сейчас скажу крамольную вещь, но вроде очевидную. Файловая система, это не самый лучший вариант по быстродействию. А ваш код не предусматривает никакого кеширования.
Я бы отошел от идеи использовать свой велосипед. Индустрия изобрела для вас кучу различных хранилищ. Sql, NoSql, ключ-значение, хеш-таблицы. Вы хотите что-то хранить на диске?!
MySQL и Redis хранят данные на диске, но в то же время у них есть кеширование и механизмы оптимизации, выгрузка в RAM.
А кроме того, ваш код:
- слишком примитивен и не оптимален. Нет поддержки транзакций и явного механизма блокировок. А это вылезет коллизиями при нагрузке.
- не учитывает очень важные нюансы работы, например
особенности работы php с файловой системой.
что на счёт быстродействия?
Быстродействие будет посредственное, а главное с коллизиями.
не нагнётся ничего при 3 ГБ данных?
Вы будете создавать излишнюю нагрузку на диск.
Вопрос надо ставить не в гигабайтах, а в обращениях в секунду. Диск захлебнется.