在我的 Web 应用程序中,我使用Amazon ECS PHP 类来获取有关 Amazon 产品的数据。目前我为每个页面请求创建新对象。初始化对象大约需要 1000 毫秒,从亚马逊获取数据大约需要 100 毫秒。
我的问题是如何避免为每个用户请求创建对象?我不确定它在 PHP 中是否可行,因此请随时提出替代解决方案。
我想我需要创建一个小程序,它将在服务器上运行并侦听来自 PHP 的请求,从 Amazon 获取数据并将其返回给 PHP。请建议我是否正确并告诉我我应该看什么?
在我的 Web 应用程序中,我使用Amazon ECS PHP 类来获取有关 Amazon 产品的数据。目前我为每个页面请求创建新对象。初始化对象大约需要 1000 毫秒,从亚马逊获取数据大约需要 100 毫秒。
我的问题是如何避免为每个用户请求创建对象?我不确定它在 PHP 中是否可行,因此请随时提出替代解决方案。
我想我需要创建一个小程序,它将在服务器上运行并侦听来自 PHP 的请求,从 Amazon 获取数据并将其返回给 PHP。请建议我是否正确并告诉我我应该看什么?
这里有一些提示可以帮助您:
AmazonECS::requestDelay($enable = null)
)。这是一个粗略的示例(我之前没有使用过 AmazonECS,您也没有提供任何代码):
session_start(); // remove this if you are already doing it somewhere else
$amazon = new AmazonECS($accessKey, $secretKey, $country, $associateTag);
$myQuery = 'my query';
if (isset($_SESSION['amazon_ecs_cache'][$myQuery]) {
// use the cached data in the session
$myData = $_SESSION['amazon_ecs_cache'][$myQuery];
} else {
// get the data from amazon
$myData = $amazon->search($myQuery);
// cache it so we don't have to get it again next time
$_SESSION['amazon_ecs_cache'][$myQuery] = $myData;
}
// do fun stuff with $myData here
var_dump($myData);
如果您要序列化的对象是不可序列化的,只需创建一个可序列化并带有您真正感兴趣的值的对象。