PHP缓存在运行时是否包含?

PHP缓存在运行时是否包含?,php,Php,我在同一页上多次包含相同的文件。我注意到当我这样做时,PHP似乎正在缓存文件。当我用rand函数生成一个随机数时,它在两个包含中都是相同的。有人知道如何阻止PHP这样做吗?我尝试了一些不同的头函数,如以下所示,但它们不起作用: header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); //

我在同一页上多次包含相同的文件。我注意到当我这样做时,PHP似乎正在缓存文件。当我用rand函数生成一个随机数时,它在两个包含中都是相同的。有人知道如何阻止PHP这样做吗?我尝试了一些不同的头函数,如以下所示,但它们不起作用:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0

编辑:好吧,我很笨,我忘了我是从jquery脚本调用include的,我相信它正在缓存文件。我回去看有人要的代码,发现了。谢谢大家。

很有可能您正在该文件中使用相同的值播种pRNG。标题影响浏览器,而不是脚本

我确信包含的文件不会被缓存:我制作了一个控制台程序,其中每个“函数”都是通过包含一个文件来实现的。在不重新启动程序的情况下更改文件仍允许加载更新的文件


所以,你的问题要么是随机种子,要么是别的什么。尝试
echo microtime()
以查看它是否两次都给出相同的结果。

很可能您正在该文件中使用相同的值对pRNG进行种子设定。标题影响浏览器,而不是脚本

我确信包含的文件不会被缓存:我制作了一个控制台程序,其中每个“函数”都是通过包含一个文件来实现的。在不重新启动程序的情况下更改文件仍允许加载更新的文件


所以,你的问题要么是随机种子,要么是别的什么。尝试
echo microtime()
看看它是否两次都给出相同的结果。

我建议多次包含同一个文件不是特别好的做法

更好的解决方案是只包含一次,然后多次调用它包含的函数

显然,这将意味着改变代码的工作方式——我想它目前是作为一个代码块编写的,只要包含它就可以运行。您需要对其进行更改,以便将其包含在一个函数(或者根据需要包含多个函数)中,以便可以随意调用它

然后在你的程序开始时只包含一次

我知道这并不能直接回答这个问题,但这样做是更好的编码实践,并且会使代码更易于管理和维护


希望能有所帮助。

我建议多次包含同一个文件不是特别好的做法

更好的解决方案是只包含一次,然后多次调用它包含的函数

显然,这将意味着改变代码的工作方式——我想它目前是作为一个代码块编写的,只要包含它就可以运行。您需要对其进行更改,以便将其包含在一个函数(或者根据需要包含多个函数)中,以便可以随意调用它

然后在你的程序开始时只包含一次

我知道这并不能直接回答这个问题,但这样做是更好的编码实践,并且会使代码更易于管理和维护


希望对您有所帮助。

您的include()在哪里?给我们看更多的代码…我包含了两个输出rand()的文件。您是否正在给随机数生成器添加盐分?header函数用于控制文件的头,但浏览器不缓存它,它在您的include中不起作用…@Keith:您问了一个关于include()函数的问题,但拒绝向我们显示使用include()的代码。你希望我们猜你的代码是什么吗?你的include()在哪里?给我们看更多的代码…我包含了两个输出rand()的文件。您是否正在给随机数生成器添加盐分?header函数用于控制文件的头,但浏览器不缓存它,它在您的include中不起作用…@Keith:您问了一个关于include()函数的问题,但拒绝向我们显示使用include()的代码。你希望我们猜猜你的代码是什么吗?microtime从所有包含中产生了相同的输出(0.83720300 1340651830)microtime从所有包含中产生了相同的输出(0.83720300 1340651830)。我同意,我可能会改变它的工作方式,但如果它是缓存,我也很感兴趣。我在某个地方读到,include中的所有变量都被读入名称空间,不再被访问。但我找不到其他地方有这样的说法。我同意,我可能会改变它的工作方式,但如果它是缓存,我也很感兴趣。我在某个地方读到,include中的所有变量都被读入名称空间,不再被访问。不过,我找不到其他地方有这样的说法。