如何每小时自动将生成的php网站转换为HTML?

时间:2014-08-13 07:20:20

标签: php html

我的网站加载速度非常慢,因为它直接从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] . "&nbsp;" . $line_of_text[2] . "</p>";}; 

} 

fclose($file_handle); ?>

谢谢!

3 个答案:

答案 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);
?>