|
|
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Леди и джентльмены! У меня 8 Фокс. В базе данных слетела таблица: ...has become corrupted. The table will need to be repaired before using again и т.п. Нашла топик, где говорится, что нужно либо запустить некий dbed.exe или сделать Код: plaintext 1. 2. Теперь позвольте задать несколько возникших у меня после всего этого вопросов: 1. Где можно скачать dbed.exe и нужно ли его качать? 2. Зачем делать COPY TO, если все и без этого заработало? 3. Отчего заваливается таблица и можно ли этого избежать впредь? 4. В этой таблице у меня около 10 тыс. записей. Могу ли я быть уверена, что в таблице ничего не потеряно после восстановления? Благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2006, 00:25 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Лисонька1. Где можно скачать dbed.exe и нужно ли его качать? В интернете, наверное ;) Например, здесь http://softsearch.ru/programs/27285.shtml http://www.freesoft.ru/?id=502&name=multi-dbedit-v2.1-beta-(freeware) http://www.searchfile.ru/?command=brows&id=16273 Вообще, "чинилок" файлов DBF достаточно много. Но прежде чем ими пользоваться следует убедиться, что они не испортят таблицу еще больше. В данном случае, будет ли эта програма корректно восстанавливать именно файлы DBF от VFP8 Лисонька2. Зачем делать COPY TO, если все и без этого заработало? На самом деле, надо не COPY TO делать, а создать чистую таблицу с нуля и через APPEND FROM закачать в нее данные из поврежденной таблицы. Хотя, все это - без гарантий. По хорошему, требуется всегда иметь резервную копию базы данных. Т.е. регулярно делать Backup и хранить эти резервные копии хотя бы за неделю. Лисонька3. Отчего заваливается таблица и можно ли этого избежать впредь? Сбой питания или разрыв соединения в процессе внесения модификаций в таблицу. Избежать совсем - невозможно. Но можно существенно снизить вероятность такого события: 1) Убедится, что все железо - безглючное. В особенности сетевая и видео (!) карты. 2) Поставить блоки бесперебойного питания как к компам, так и к хабам. 3) Свести время собственно модификации к возможному минимуму. Т.е. модификации делать в буферезированных таблицах (или в копиях данных), а сохранение изменений делать одним пакетом. Одним блоком команд, который не может быть прерван пользователем (нет диалога с пользователем внутри этого процесса) Лисонька4. В этой таблице у меня около 10 тыс. записей. Могу ли я быть уверена, что в таблице ничего не потеряно после восстановления? Нет. Надо просмотреть таблицу глазами. Как правило, повреждения затрагивают последние записи. Т.е. те, которые физически расположены в самом конце таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2006, 01:03 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Лисонька2. Зачем делать COPY TO, если все и без этого заработало?Это нужно делать для того, чтобы появиласьгарантия, что не только байтики с содержимым полей в файле содержат корректную информацию, но и все служебные байтики тоже. Был у меня раз неприятный сбой (FPD26), когда в таблицу записались chr(0) на всю длину нескольких записей. И несмотря на то, что эти записи были удалены и вместо них была добавлена нормальная информация, индекс был перестроен, пользователей пустил с приложением работать - бац - пользователь добавляет пару записей в починенную таблицу - и индекс опять слетает. Известно, что на каждую запись существует по крайней мере 1 байт с deleted()-флагом (и может еще чем-то). Я предполагаю, что в него тоже записался chr(0), а этого в нормальном файле быть не должно. И поскольку индекс строится по ненормальному файлу, он при перестроении слетает. Как правильно заметил ВладимирМ, лучше все-таки использовать APPEND FROM, а не COPY TO. Я в конце концов так и сделал: взял таблицу из последнего бэкапа, сделал zap, и потом append from дефектная_таблица. Индекс построил заново (хотя мог подложить индекс тоже из бэкапа и сделать reindex, что тоже нормально). Отсюда вывод: иногда для устранения сбоя недостаточно восстановить данные в упавшем файле dbf, нужно пересоздать этот файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2006, 11:19 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Лисонька4. В этой таблице у меня около 10 тыс. записей. Могу ли я быть уверена, что в таблице ничего не потеряно после восстановления? Нет. Надо просмотреть таблицу глазами. Как правило, повреждения затрагивают последние записи. Т.е. те, которые физически расположены в самом конце таблицы.Ну, это "как правило" - при добавлении. А если сбой произошел во время update - повреждение может оказаться где угодно. Другое дело, что чем грамотнее спроектирована БД, тем больше в ней insert-ов и меньше update-ов, но это правило опять же не распространяется на все классы приложений. Если это оперативная БД - да. А если это какой-то аналитический "куб", то в нем может быть преобладание update-ов над другими операциями. Впрочем, кубы заполняются не пользователями, и в них сбои происходят очень редко ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2006, 11:28 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Не COPY TO делать, а создать чистую таблицу с нуля и через APPEND FROM закачать в нее данные из поврежденной таблицыДа, вот APPEND не вызвал бы у меня лишних вопросов, здесь для меня все логично. По хорошему, требуется всегда иметь резервную копию базы данных.Есть, и не за неделю, а за каждый день ;-))) Но факт, что таблица одна слетела. Вот, можно сказать, получилась у меня первая разведка боем. Железо без глюков, бесперебойники.Это дома должно быть железо без глюков. А на работе - что дадут. Но, скорее всего, сетевая. Оказывается, в то же утро на одной из машин потерялся путь к БД Access, начисто потерялся. Пришел умный дядя, провочал что-то про "хреновый хаб", высказался нелицеприятно про девушек-пользователей, переписал на этом компе один mde-файл и все заработало. А после обеда запустили мою прогу, а там главная таблица слетела. > Чем грамотнее спроектирована БД, тем больше в ней insert-ов и меньше update-ов.Не знаю, насколько грамотно. Выставлен BufferMode 2. Все новые записи добавляются так: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. Если это какой-то аналитический "куб"...А вот "куб" - это тотальная замена значений полей в БД по определенным условиям или что-то другое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2006, 16:11 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Hi Лисонька! > Не знаю, насколько грамотно. Выставлен BufferMode 2 Для формы? Лучше так не делать - ибо тут вступает в игру "нечеловеческая логика" - и фокс сам начинает решать - использовать оптимистическую буферизацию строк или всей таблицы. Так что лучше на уровне каждого курсора (для тех что нужно конечно, все так настраивать не обязательно) указать 5-ю буферизацию. > Все новые записи добавляются так: > IF NOT m.error > INSERT INTO... > =TABLEUPDATE(0,.t.,'table1') > ELSE > ENDIF А в чём смысл СРАЗУ сохранять изменения? Обычно буферизацию используют как раз для того, чтобы отложить момент сохранения - т.е. пользователь чего-то там правит в курсоре (да хоть целый месяц форму открытой держит) - а уже потом "всем скопом" сохраняются изменения. > Редактирование записей: > REPLACE ... WITH ... IN table1 > =TABLEUPDATE(0,.t.,'table1') > Т.е. UPDATE table1 SET ... не использую. Тут нет принципиальной разницы. Принципиально то, что у тебя зачем-то сразу после правки буфера идёт его сброс - это нетипично для форм редактирования. Впрочем и использование REPLACE нетипично - обычно просто правят в соответствующих контролах данные - а уж контролы привязаны к полям курсора. > А вот "куб" Это OLAP... Многомерный анализ, системы принятия решений - врядли это твой случай... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2006, 20:11 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Так что лучше на уровне каждого курсора указать 5-ю буферизацию.Но тогда, пожалуйста, поясните мне выгоду накапливать новые записи в буфере, а потом "пачкой" писать их в таблицу. Чем плохо, что пользователь заполнил форму, а затем нажал либо кнопку ОК (пошла запись), либо Отмена? Или методика такова, что надо строить приложение, которое обязательно работает как INSERT INTO cursor? Это очень важно для меня на будущее - как строить новый проект. Впрочем и использование REPLACE нетипично - обычно просто правят в соответствующих контролах данные - а уж контролы привязаны к полям курсора.Тоже важно для меня на будущее. Да, я в форме редактирования к контролам привязываю переменные со значениями полей, затем делаю lcVar1=...control1.VALUE; lnVar2=...control2.VALUE; ... , а потом уже REPLACE ... WITH lcVar1 и т.д. В чем выгода работать непосредственно с полями? И еще. А почему все же курсор, а не сама таблица? Благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2006, 21:57 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Джентельмены, разъясните, пожалуйста, мне мои последние два вопроса о буферизации и курсоре! А то все как-то промолчали... Благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2006, 15:47 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Чем плохо, что пользователь заполнил форму, а затем нажал либо кнопку ОК (пошла запись), либо Отмена? При таком раскладе, контролы к полям привязывать нет никакого смысла и буферизация здесь нигде не валялась. В ините формы подвесь значения полей на value контролов и записывай изменения по кнопке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2006, 16:13 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
valerykaПри таком раскладе, контролы к полям привязывать нет никакого смысла и буферизация здесь нигде не валялась. В ините формы подвесь значения полей на value контролов и записывай изменения по кнопке Да я, по большому счету, так и делаю. Вопрос-то в том, что более правильно - значения полей или переменные в VALUE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2006, 16:29 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Лисонька Так что лучше на уровне каждого курсора указать 5-ю буферизацию.Но тогда, пожалуйста, поясните мне выгоду накапливать новые записи в буфере, а потом "пачкой" писать их в таблицу. Чем плохо, что пользователь заполнил форму, а затем нажал либо кнопку ОК (пошла запись), либо Отмена? Или методика такова, что надо строить приложение, которое обязательно работает как INSERT INTO cursor? Это очень важно для меня на будущее - как строить новый проект. Здесь вопрос не в том, "пачкой или по одному" происходит сброс буфера, а в управляемости этого процесса (сброса буфера). При строковой буферизации, при определенных условиях, попытка сброса буфера может произойти автоматически. Т.е. в неуправляемом программистом режиме. При табличной буферизации такого быть не может. Сброс буфера только и исключительно программно по команде TableUpdate() Настройка Form.BuferMode означает, что FoxPro сам решит, каким таблицам дать строковую, а каким - табличную буферизацию. Т.е. процесс сброса буфера становиться менее управляемым. Лисонька Впрочем и использование REPLACE нетипично - обычно просто правят в соответствующих контролах данные - а уж контролы привязаны к полям курсора.Тоже важно для меня на будущее. Да, я в форме редактирования к контролам привязываю переменные со значениями полей, затем делаю lcVar1=...control1.VALUE; lnVar2=...control2.VALUE; ... , а потом уже REPLACE ... WITH lcVar1 и т.д. В чем выгода работать непосредственно с полями? Просто удобнее. Нет лишних "телодвижений". При работе через переменные необходимо: -) Объявить область видимости таких переменных как PUBLIC (что уже не есть хорошо) -) Инициализировать эти переменные (записать в них данные из записи таблицы) -) По окончании редактирования записать их значения в поля таблицы -) Дать команду TableUpdate() При использовании напрямую полей буферезированной таблицы ничего этого вообще не нужно. Только дать команду TableUpdate() при сохранении. Меньше кода, меньше мест для возможных проблем и ошибок. ЛисонькаА почему все же курсор, а не сама таблица? В данном случае подразумевалось одно и то же. Здесь путаница с терминами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2006, 16:48 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Лисонька valerykaПри таком раскладе, контролы к полям привязывать нет никакого смысла и буферизация здесь нигде не валялась. В ините формы подвесь значения полей на value контролов и записывай изменения по кнопке Да я, по большому счету, так и делаю. Вопрос-то в том, что более правильно - значения полей или переменные в VALUE?И это правильно, но писать долго ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2006, 17:39 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
ВладимирМ-) Объявить область видимости таких переменных как PUBLIC (что уже не есть хорошо) -) Инициализировать эти переменные (записать в них данные из записи таблицы) -) По окончании редактирования записать их значения в поля таблицы -) Дать команду TableUpdate() При использовании напрямую полей буферезированной таблицы ничего этого вообще не нужно. Только дать команду TableUpdate() при сохранении. Меньше кода, меньше мест для возможных проблем и ошибок. Здорово! Смекалки не хватило сообразить, что работы здесь будет поменьше, а без TableUpdate() вообще всё в записи останенется Status Quo. Спасибо всем-всем-всем!! Елизавета Скрунскайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2006, 17:39 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Народ! Пардонте вам за странный вопрос. У меня таблы еще ни разу (тьфу тьфу) не падали. Но если вдруг... Ответьте. При запуске EXE сразу выдается сообщение ...has become corrupted. The table will need to be repaired before using again... или об это можно узнать, тока когда юзер вызвал форму с DE, в которой и используется сламанная таблица? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2006, 19:36 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
О_В_ДНарод! Пардонте вам за странный вопрос. У меня таблы еще ни разу (тьфу тьфу) не падали. Но если вдруг... Ответьте. При запуске EXE сразу выдается сообщение ...has become corrupted. The table will need to be repaired before using again... или об это можно узнать, тока когда юзер вызвал форму с DE, в которой и используется сламанная таблица? Зависит от того, что именно было повреждено. Можешь и вообще никаких сообщений не получить, просто прога будет криво работать. Как правило, сообщение об ошибке появляется при попытке открыть таблицу. Если не было открытия до вызова формы (не обязательно явного, например, Select-SQL автоматом откроет таблицу), то будет сообщение только при открытии формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2006, 20:46 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
ВладимирМКак правило, сообщение об ошибке появляется при попытке открыть таблицу. Если не было открытия до вызова формы (не обязательно явного, например, Select-SQL автоматом откроет таблицу), то будет сообщение только при открытии формы. Во как! Как же быть? Может форму эту юзер ишшо месяц не запустит, а потом бац! вторая смена. Тут ведь и резерная копия может уже не помочь (есть такая вероятность, да?). Можа писать код, кторый при запуске основной формы будет по очреди USE / USE на кажную табблу делать. Или то не выход, а есь дургая метода для обнаружения ошибки сразу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2006, 21:41 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
О_В_ДВо как! Как же быть? Может форму эту юзер ишшо месяц не запустит, а потом бац! вторая смена. Тут ведь и резерная копия может уже не помочь (есть такая вероятность, да?). Можа писать код, кторый при запуске основной формы будет по очреди USE / USE на кажную табблу делать. Или то не выход, а есь дургая метода для обнаружения ошибки сразу? Ну, вообще-то, есть вероятность, что произойдет ядерная война? Начинаем срочно копать личный бункер? Прежде, чем что-то начинать писать надо сопоставить: вероятность события, последствия наступления события, затраты на учет этого события, эффективность решения, ограничения накладываемые данным решением. Так вот, 100% решения проблемы не существует. Как уже было сказано, все зависит от того, какое именно повреждение произошло. Делать проверку всех таблиц при запуске системы можно, если таблиц немного. Т.е. если общее время проверки относительно невелико. Опять же, если таблица нужна для специфической формы, которую используют раз в месяц - останавливать всю работу? А в сетевом приложении как? Будет выгонять всех чтобы вошел кто-то один? Для проверки-то нужно эксклюзивное открытие таблиц. Если формой не пользовались несколько месяцев, то пол-дня как-нибудь переживут. Резервная копия, конечно, тоже не поможет. В ней уже поврежденная таблица. Надо будет править ручками. Как правило, делают отдельную процедуру проверки как собственно структуры таблиц, так и целостности базы данных вообще. Эту процедуру запускает администратор базы данных либо регулярно (раз в неделю, раз в месяц и т.п.), либо когда есть подозрение на повреждение данных. Вообще-то, есть много таких процедур, которые требуют регулярного запуска: архивирование (создание резервной копии), упаковка (удаление записей помеченных как удаленные), проверка целостности базы данных и т.п. В общем, не стоит паниковать. У Вас ведь не было пока сбоев? Какие основания есть предполагать, что с завтрашнего дня сбои начнуться каждый день? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 00:02 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Спасибо, Владимир! Бункер можно и не копать. Но с другой строны гром не грянет - мужик не перекреститься. И еще знать бы где упасть - соломку постеил бы. Теблиц с полтора десятка, все 5 юзеров в одном кабинете. Один раз в день можно и побеспокоить. Зато голова будет меньше болеть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2006, 09:38 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Hi О_В_Д! Нет никаких абсолютно надёжных способов проверить "целостность таблицы" - уже хотя бы по той причине, что под этим понимаются совершенно разные вещи! Вот сегодня смотрел совершенно "целую" с формальной точки зрения таблицу - т.е. и структура корректна, и в полях (там только символьные были) "неправильных" символов не было - но таблица была разрушена - вместо реальных данных там были размещены куски текстового файла (причём фоксовой программы :)) Т.е. видимо либо ОС, либо диск "пошутили" и на место сектора/кластера с данными таблицы записали совсем левый сектор с prg-кой... Поскольку формальные требования к структуре не нарушены, я просто не представляю каким образом можно автоматизировано проверить "целостность" таблицы :) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 02:02 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Hi О_В_Д! Нет никаких абсолютно надёжных способов проверить "целостность таблицы" - уже хотя бы по той причине, что под этим понимаются совершенно разные вещи! Вот сегодня смотрел совершенно "целую" с формальной точки зрения таблицу - т.е. и структура корректна, и в полях (там только символьные были) "неправильных" символов не было - но таблица была разрушена - вместо реальных данных там были размещены куски текстового файла (причём фоксовой программы :)) Т.е. видимо либо ОС, либо диск "пошутили" и на место сектора/кластера с данными таблицы записали совсем левый сектор с prg-кой... Поскольку формальные требования к структуре не нарушены, я просто не представляю каким образом можно автоматизировано проверить "целостность" таблицы :) Hi и вам, Igor! ;-)) Ну не будем уж так утрировать мой вопрос, намекать, как глубоко уважаемый мною Гуру форума, на вероятность ядерной войны. Я же всетаки говорил про сообщение ...has become corrupted. The table will need to be repaired before using again, а уж че там в полях понаписано на данный момент конешно надо глазками смотреть. Вывод вобщем-то неутешителен: от сумы да тюрьмы не зарекайся - сёдня усё нормально, завтрева тожа, и намедни было хорошо, а через месячишко вдруг обнаруживаешь, что табле или всей БД ёк, а номальный откат сделаешь тока из копии полугодовой давности. Эх, жизня малина!.. Тудыть ее в качель... Да, стабильности в мире нет ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 21:44 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Поэтому бекапы надо делать чаще ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 01:51 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Внесу и я свою лепту... Делал я одну базу (VFP5) несколько лет назад - компы древние, сеть хреновая, диски на FAT32. Проблем с индексами и мемо было немало. Сделал два вывода: 1. если файл-сервер для DBF - то только на NTFS (проблемы сошли почти на нет). 2. даже когда бало все на FAT32, я пошел на хитрость - после очередного SELECT FROM table1 или UPDATE я принудительно закрывал все открывшиеся таблицы USE IN table1. При этом, даже если комп виснет или сеть валится, эти файлы оставались целы. Вы будете смеяться, но тормозов проги (на открытие файлов каждый раз) это не вызывало (видимо, за счет кэшей), а прога - на ней крутилась круглосуточная диспетчерская служба, нагрузка днем немаленькая... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 09:46 |
|
||
|
4 вопроса о рухнувшей и вновь восстановленной таблице
|
|||
|---|---|---|---|
|
#18+
Hi О_В_Д! Дело в том, что ДАННАЯ конкретная ошибка - лишь одна из множества возможных при повреждеиях таблицы - причём неверное это самая безобидная ошибка :) Ибо более серьёзные ошибки включают и пресловутую C005 - её отловить из фокса практически нереально... Что касается проверки соответствия счётчика записей и длинны файла - то это несложная проверка - буквально 10 строк кода - причём "исправляется" она так-же просто... Если пойти чуть дальше - то можно держать где-то эталоны всех заголовков dbf и сверять их с реальными файлами (за исключением тех байт, которые ДОЛЖНЫ меняться) - структура заголовка dbf хорошо описана в хелпе. Ещё из "несложных" проверок - размеры cdx (должен быть кратен 512 байтам и не равен 0 конечно), размеры fpt - тоже не нулевой (и даже не менее 512 байт) и соответствующий по кратности размеру BLOCKSIZE (который можно выяснить из заголовка fpt)... Остальные проверки уже будут заметно более сложными и длительными. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2006, 00:19 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33618777&tid=1592045]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 205ms |
| total: | 460ms |

| 0 / 0 |
