0

我正在尝试缓存一个从非常慢的 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 . "'");

?>

任何帮助,将不胜感激!

4

3 回答 3

1

您是否确保您的 $page 仅包含数据库安全字符?

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

于 2012-05-21T15:14:57.880 回答
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
));
于 2012-05-21T15:25:49.013 回答
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

于 2012-05-21T22:14:36.517 回答