.inc файл не включен надежно - PullRequest
3 голосов
/ 02 июня 2011

Я работаю над некоторым HTML-кодом, унаследованным от другого программиста, который использует операторы include в виде:

~inc:filename.inc~

Однако проблема, с которой я сталкиваюсь, заключается в том, что это включение не работает надежно. Приблизительно в 90% случаев вся информация во включенном файле импортируется без проблем, но очень часто весь этот контент пропадает, когда я обновляю страницу, и возвращается, когда я обновляюсь снова. Я уже пытался изменить операторы включения на более широко используемые формы, такие как:

<!-- FILE="filename.inc"-->
<!-- virtual="../filename.inc"-->
<!-- virtual="/filename.inc"-->

но это только приводит к тому, что файл постоянно не включается. Я ковырялся в других местах в Интернете, но, похоже, не могу найти какие-либо решения или хотя бы какое-либо использование оператора включения «~ inc:».

Стоит отметить, что этот HTML-код загружается из встроенного программного обеспечения, размещенного на маломощном оборудовании, и некоторые элементы на странице регулярно обновляются. Возможно ли, что методы обновления просто работают слишком быстро, чтобы аппаратное обеспечение могло их обработать?

У кого-нибудь есть идеи, как мне решить эту проблему?

1 Ответ

0 голосов
/ 06 июня 2011

ОК, поэтому я скачал документацию библиотеки приложений и посмотрел в TCPIP Stack Help.chm и нашел функцию HTTPIncFile:

void HTTPIncFile(ROM BYTE* cFile);

Пользователи не должны вызывать эту функциюнапрямую, но вместо этого следует добавить динамические переменные в виде ~ inc: filename.ext ~ в их HTML-код, чтобы включить (например) файл «filename.ext» в указанное место.Утилита MPFS2 Generator будет обрабатывать все остальное.

Таким образом, похоже, что ваш оригинальный синтаксис является единственным документированным.Теперь, хотя в нем сказано не вызывать функцию напрямую, поскольку у вас возникли проблемы, возможно, стоит сделать это, чтобы увидеть, получаете ли вы те же результаты.

Также обратите внимание, что:

Когда curHTTP.callbackPos равен 0, файл открывается и записывается максимально возможное количество байтов.Текущая позиция затем сохраняется в curHTTP.callbackPos и ​​файл закрывается.При последующих вызовах чтение начинается с сохраненного местоположения и продолжается.Как только достигнут конец входного файла, curHTTP.callbackPos устанавливается в 0 для указания завершения.

Это чисто предположение, но, возможно, у вас могут возникнуть проблемы, если вы попытаетесь включитьфайл более одного раза или попробуйте включить один или несколько файлов одновременно.Если файл не включен, это может быть потому, что callbackPos не был сброшен.Я также предполагал, что вы не пытаетесь изменить файл шаблона, но вы сказали:

определенные элементы на странице регулярно обновляются

Если файлы, которые выесли хотите включить изменения, вы, вероятно, сталкиваетесь с проблемами параллелизма.Возможно, вам придется прибегнуть к блокировке или синхронизации, чтобы убедиться, что этого не произойдет, или попробуйте выполнить ожидание при включении метода, проверяя смещение, пока вы не включите положительное число байтов.

...