PHP:如何使用输出缓冲区缓存页面?

时间:2012-05-21 15:13:29

标签: php mysql output-buffering

我正在尝试缓存从非常慢的API获取/处理数据的页面 - 因此我可以将其快速加载到用户。但由于某种原因,输出缓冲区是空的?

<?php

ob_start();

// here I have php scripting accessing api's for information

?>


// Here I have HTML content with some php conditions and echos to filter and display the gathered information

// then I try to save the buffered page to the database:

<?php

//connect to database
$page = ob_get_contents();

mysql_query("UPDATE `pages` SET `page_cache` = '" . $page . "' WHERE `page_id` = '" . $page_id . "'");

?>

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

您确定$ page只包含数据库安全字符吗?

如果输出包含单个',会发生什么?

答案 1 :(得分:0)

你可能想让MySQL编码$ page变量:

mysql_query(sprintf(
    "UPDATE `pages` SET `page_cache`='%s' WHERE `page_id`=%s",
    mysql_real_escape_string( $page ),
    intval( $page_id )  // assuming it's an int
));

答案 2 :(得分:0)

检查/etc/php.ini中是否启用了输出缓冲: http://www.php.net/manual/en/outcontrol.configuration.php

另外,做一个:

<?php echo ob_get_contents(); ?>

如果打印FALSE,则可能无法启用输出缓冲: http://php.net/manual/en/function.ob-get-contents.php