我有一个 Web 表单,其中包含一个输出状态选择选项的包含文件。html看起来像
<select name="state" id="state">
<option value="">--</option>
<?php include ("resources/data/stateoptions.php"); ?>
</select>
状态选项调用 Web 服务,以便商店位置列表始终是最新的。然而,这个联系表单页面似乎运行异常缓慢(如果我删除这个包含会快得多)。所以我想缓存网络服务调用。我的状态选项文件如下所示
<?php
$cachefile = "cache/states.html";
$cachetime = 5 * 60; // 5 minutes
// Serve from the cache if it is younger than $cachetime
if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile)))
{
include($cachefile);
echo "<!-- Cached ".date('jS F Y H:i', filemtime($cachefile))."
-->n";
exit;
}
ob_start(); // start the output buffer
?>
<?php
//url of locations web service
$serviceURL = 'http://webserviceurl/state';
//query the webservice
$string = file_get_contents($serviceURL);
//decode the json response into an array
$json_a=json_decode($string,true);
foreach( $json_a as $State => $IdealState){
$IdealState = $IdealState[State];
$IdealState2 = str_replace(' ', '-', $IdealState);
echo '<option value='.$IdealState2.'>'.$IdealState.'</option>';
}
?>
<?php
// open/create cache file and write data
$fp = fopen($cachefile, 'w');
// save the contents of output buffer to the file
fwrite($fp, ob_get_contents());
// close the file
fclose($fp);
// Send the output to the browser
ob_end_flush();
?>
当我直接调用这个文件时,一切都按预期工作,并创建了一个 states.html 文件。但是由于某种原因,当我的联系表单页面中包含 stateoptions.php 文件时,它永远不会创建缓存文件,并且速度问题仍然存在。我是一个相当新手的程序员,所以任何帮助将不胜感激。
谢谢!