在我的网络应用程序中,我使用Amazon ECS PHP Class来获取有关亚马逊产品的数据。目前,我为每个页面请求创建新对象。初始化对象需要大约1000毫秒,从亚马逊获取数据需要100毫秒。
我的问题是如何避免每个用户请求的对象创建?我不确定它在PHP中是否可行,因此请随意提出替代解决方案。
我认为我需要创建一个小程序,它将在服务器上运行并侦听来自PHP的请求,从Amazon获取数据并将其返回给PHP。请建议我是否正确,并告诉我应该注意什么?
答案 0 :(得分:2)
这里有一些技巧可以帮助你:
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);
答案 1 :(得分:1)
如果要序列化的对象不可序列化,只需创建一个 可序列化的对象,并带有您真正感兴趣的值。