我的网站加载速度非常慢,因为它直接从kimonolabs.com(通过csv)的流中集成了几个数据。我不熟悉数据库,所以它通过纯PHP请求获取数据。
我知道最好的方法是csv导入数据库然后请求本地数据库的cronjob,但我不想让它复杂化 - 为了我的目的和谷歌搜索引擎优化我想要一个解决方案,生成的index.php将每小时自动复制到index.html - 因为这是流更新的频率。手动没问题(只需在浏览器复制和粘贴中打开源代码)。
示例PHP请求的源代码:
<?php $file_handle = fopen("kimonolabs.com/api/csv/xxx";, "r");
while (!feof($file_handle) )
{ $line_of_text = fgetcsv($file_handle, 1024);
if ($line_of_text[0] == 'EXAMPLE'){
print "<p>" . $line_of_text[0] . " " . $line_of_text[2] . "</p>";};
}
fclose($file_handle); ?>
谢谢!
答案 0 :(得分:3)
最简单的选择可能是将现有index.php
重命名为real_index.php
,并使index.php
如下:
$cache = 'cache.html';
if(!is_readable($cache) || filemtime($cache) < time() - 3600) {
ob_start();
include 'real_index.php';
file_put_contents($cache, ob_get_clean());
}
readfile($cache);
答案 1 :(得分:1)
设置cronjob是实现这一目标最直接的方法,因为您基本上是在尝试将.php文件的数据输出安排到index.html文件。
另一个变体是将索引输出为.php文件,而不是.html文件,使用memcache,Redis甚至phpFastCache,csv数据的到期时间为1小时。
除此之外,我认为没有直接解决方案。
答案 2 :(得分:0)
只是一个想法。将它放在一个文件中并将文件与index.php一起放置并设置一个cron来每小时执行一次该文件。这绝不是最好的方式。您必须考虑Ajax加载或缓存..
<?php
// Create a stream
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.yoururl.com/index.php', false, $context);
file_put_contents('index.html', $file);
?>