网站崩溃(PHP致命错误),而html编码器保存智能模板

时间:2010-07-21 10:23:20

标签: php smarty

我们正在运行相当大的网站(每天约400K页面浏览量)并使用Smarty作为模板引擎。 HTML编码器每天都会更改模板,每次模板更改(几乎每次更改)都会导致网站崩溃,因为PHP Fatal error: Call to undefined function _smarty_tplfunc_f0cb5c08ca1726d224308f2f6bd56b4f_0() in ... PS:是的,我们正在使用$smarty->compile_check来立即查看模板更改。

要解决此错误,我们会清除所有网站缓存。我觉得不舒服!

谁知道,我该如何解决?以及为什么每次(几乎每次)模板更改时都会出现此错误。

谢谢。

1 个答案:

答案 0 :(得分:0)

避免此类问题的最佳方法是上传到临时文件,然后重命名。这样就不会出现部分文件。

至于为什么每次都会发生这种情况,请考虑一下。每天400k页面浏览量==每秒平均4.6次请求。考虑到我见过的大多数网站在特定时间(白天)的流量都要大得多,我怀疑你每秒钟会看到10到20个请求。如果文件写入(因为上传)花费的时间超过0.05秒,那么在写入时读取的可能性会急剧上升。

所以你的选择(从最强大到最少的顺序。你可以做多次):

  1. 当流量(希望)降低时,请在下班后上传...
  2. 使用为您重命名的FTP服务器。
  3. 上传新文件时手动重命名该文件。 (重要;重命名以覆盖原件。不要先删除或移动原件)...
  4. Hack Smarty忽略时间戳小于10到30秒的新文件(只需拨打filemtime()以确定上次修改时间。请务必先致电clearstatcache()以免不会过得很开心......