2011-06-01 23 views
3

我对从另一个程序员继承了一些HTML代码,它使用包括形式的陈述工作:.INC文件中不包括可靠

~inc:filename.inc~ 

不过,我遇到的问题是,这包括声明不能可靠地工作。大约90%的时间,包含文件中的所有信息都可以毫无问题地导入,但是当我刷新页面时,所有内容都会丢失,而当我再次刷新时,所有信息都会丢失。我已经试图改变包括报表更广泛使用的形式,例如:

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

但这只是结果一致不被包括在所有的文件中。我一直在互联网上的其他地方探索,但似乎无法找到任何解决方案,甚至无法使用'〜inc:'include语句。

值得注意的是,这个HTML是从低功率设备托管的固件中加载的,页面上的某些项目会定期更新。是否有可能更新方法运行速度太快,硬件无法处理?

有没有人有任何想法,我可以如何解决这个问题?

+0

这是什么模板语言,你使用的是什么HTTP服务器? – BoffinbraiN 2011-06-03 14:17:06

+0

我正在使用嵌入在使用其TCP/IP堆栈的MicroChip PIC上的Web服务器。我不太清楚'模板语言'是什么意思 - 我写的所有内容都是HTML或Javascript。 – CodeRedd 2011-06-03 16:43:38

+0

这是非常低级的。我想我们需要更多地了解您使用的确切硬件。你有文件吗? – BoffinbraiN 2011-06-03 16:57:43

回答

0

OK,所以我下载的应用程序库文件,并期待在TCPIP Stack Help.chm,发现HTTPIncFile功能:

void HTTPIncFile(ROM BYTE* cFile);

用户不应该直接调用此函数,但应该改为添加动态变量在他们的HTML代码中包含〜inc:filename.ext〜的形式,以在该指定位置包含(例如)文件“filename.ext”。 MPFS2 Generator实用程序将处理其余部分。

所以它看起来像你的原始语法是唯一记录的。现在,虽然它说不直接调用函数,但由于您遇到了问题,因此可能值得这样做,以查看是否得到相同的结果。

还要注意的是:

当curHTTP.callbackPos为0时,文件被打开,作为多字节可能被写入。当前位置然后保存到curHTTP.callbackPos并关闭文件。在随后的通话中,阅读将从保存的位置开始并继续。一旦达到输入文件的末尾,curHTTP.callbackPos将被设置回0以指示完成。

这是纯粹的推测,但如果您尝试多次包含该文件或试图同时包含一个或多个文件,则可能会遇到问题。如果没有包含文件,则可能是因为callbackPos未被重置。我也假设你是不是要修改模板文件,但是你确实说:

在网页上的某些项目定期更新

如果您希望包括正在改变的文件,您可能遇到并发问题。您可能需要求助于锁定或同步,以确保不会发生这种情况,或尝试使用include方法等待旋转,检查偏移量,直至成功包含正数字节。