0

在将我的 Xubuntu 从 13.04 升级到 13.10 后,我遇到了 Smarty 和 PHP 的问题错误。

基本上,Smarty 模板在我编辑模板后会延迟 5-7 秒重新编译。

我将系统时间 ( date) 与 PHP 的时间进行了比较,date(...)并且时间戳是相等的。

PHP Version 5.5.3-1ubuntu2

如何解决?

示例代码:

require_once 'classes/Smarty-3.1.8/libs/Smarty.class.php';

$tpl = new Smarty();    
// if I edit this template, changes shows up after
// 3-4 seconds which is very annoying
// there was no issue in xubuntu 13.04 / older php version!
$tpl->display('test.tpl'); 

编辑:

我仔细检查了filemtime它是否正常工作。

4

2 回答 2

2

您可以保持 opcache 启用并设置:

opcache.revalidate_freq=0

问题是,默认情况下 opcache 仅在 2 秒后检查时间戳,并且 smarty 编译的模板是在同一请求期间生成的,因此不检查。

将 opcache revalidate_freq 设置为 0 会使 opcache 每次都检查所有文件的时间戳,因此 .tpl 文件中所做的更改会立即显示。

编辑:我相信从 Smarty v3.1.29 开始不再需要这样做

于 2014-10-30T09:38:12.957 回答
0

我找到了解决方案。

Acctionaly 在 xubuntu 13.10 提供的最新 PHP 中默认启用了 zend opcache,这导致了问题。

我不得不改变php的配置:

opcache.enable=0

现在一切都很好,模板在编辑后立即编译。

于 2013-10-22T14:39:49.330 回答