【发布时间】:2017-01-16 12:52:10
【问题描述】:
我有一个 php 脚本来加载 API。它是功能性的;但是加载大约需要 15 秒。有没有办法让脚本运行得更好,从而有更快的加载时间?
这是 PHP:
<?php
error_reporting(0);
$apikey = "apikey=***************************";
$json = file_get_contents("https://eu.api.battle.net/wow/guild/Vek'Nilash/Renascence?fields=news&locale=en_GB&".$apikey);
$feed = json_decode($json);
$feedcount = 0;
foreach($feed->news as $newsfeed) {
if ($feedcount >= 8) {
break;
}
echo $newsfeed->character . PHP_EOL;
$type = $newsfeed->type;
// $iteminfo = $newsfeed->itemId . PHP_EOL;
$itemnumber = $newsfeed->itemId;
if ($type == "itemLoot"){
echo " has looted:";
$itemurl = file_get_contents("https://eu.api.battle.net/wow/item/$itemnumber?locale=en_GB&".$apikey);
$itemname = json_decode($itemurl);
echo " [" . $itemname->name . "]<br>";
}
elseif ($type=="itemPurchase"){
echo " has purchased:";
$itemurl = file_get_contents("https://eu.api.battle.net/wow/item/$itemnumber?locale=en_GB".$apikey);
$itemname = json_decode($itemurl);
echo " [" . $itemname->name . "]<br>";
}
elseif ($type=="playerAchievement"){
echo " has Achieved:";
echo " " . $newsfeed->achievement->title . "<br>";
}
++$feedcount;
}
?>
【问题讨论】:
-
您首先要回答的是:这与时间相关的步骤是什么?然后你就知道要优化什么了。立即浮现在脑海的是您发出的 http 请求。这需要多长时间?其次是:你必须处理的响应有多大,也许可以在请求中过滤,以便你必须处理 less 信息?
-
这听起来合乎逻辑。我会进一步调查。谢谢。
-
如果你曾经在那个网络上玩过游戏,你肯定知道频繁且不可预测的游戏延迟(
their服务器或网络,或your网络)。如果您没有在循环中分析file_get_contents的贡献,那么当您询问优化此脚本时,您是在摸黑。
标签: php performance