PHP/HTML/mySQL URL缓存问题
我有这个功能: 它基本上检查一个表是否包含一些指向乐队图片的URL。如果它这样做了,那么它将随机对表进行排序,选择第一个结果,然后输出html代码以插入图片。如果表中没有该特定波段的图片,那么它将下载一个包含图像URL的XML文件,解析XML并插入表中,然后像前面一样获取图像的HTML代码 在html输出方面,您无法判断图像URL是否已缓存。但是,缓存图像URL(第一次)时,无论使用何种web浏览器,都不会显示图像。HTML很好-图像链接正确PHP/HTML/mySQL URL缓存问题,php,mysql,html,caching,Php,Mysql,Html,Caching,我有这个功能: 它基本上检查一个表是否包含一些指向乐队图片的URL。如果它这样做了,那么它将随机对表进行排序,选择第一个结果,然后输出html代码以插入图片。如果表中没有该特定波段的图片,那么它将下载一个包含图像URL的XML文件,解析XML并插入表中,然后像前面一样获取图像的HTML代码 在html输出方面,您无法判断图像URL是否已缓存。但是,缓存图像URL(第一次)时,无论使用何种web浏览器,都不会显示图像。HTML很好-图像链接正确 你有什么想法吗?包含此功能的站点的实时版本位于此处:
你有什么想法吗?包含此功能的站点的实时版本位于此处:。我刚刚清空了表,所以应该没有太多缓存的URL。尝试选择一个波段,然后查看图像是否加载。您可以通过查看页面底部来判断URL是否在缓存位置。基本上看,您在第一次获取图像后没有返回
<?php function getimage($artist){
$api_key = "XXXXXXXXX";
$iquery = mysql_query("SELECT url FROM `images` WHERE artist = '".$artist."' ORDER BY RAND() LIMIT 1");
if($artist != ""){
$artist = str_replace(" ", "+", $artist);
if(mysql_num_rows($iquery) == 0){
$url = "http://developer.echonest.com/api/v4/artist/images?format=xml&api_key=".$api_key."&name=".$artist."&results=20";
$data = file_get_contents($url);
if($data=false){return 'Error Getting Image';}
$images = new SimpleXMLElement($data);
foreach($images as $image){
foreach($image->image as $indimage){
$insiquery = "INSERT INTO images (id, artist, url) VALUES (NULL, '$artist','".$indimage->url."')";
mysql_query($insiquery);
}
}
return "<img src=\"".$indimage->url."\" alt=\"$artist image\" />";
}else{
$imgurl = mysql_fetch_array($iquery);
return"<img src=\"".$imgurl['url']."\" alt=\"$artist image\" />";
}
}
else{
return"Image Aquire Function Error: <i>No Band Specified</i>";
}
return null;
}?>
echo getimage('Britney Spears');
基本上看,您在第一次获取图像后没有返回
<?php function getimage($artist){
$api_key = "XXXXXXXXX";
$iquery = mysql_query("SELECT url FROM `images` WHERE artist = '".$artist."' ORDER BY RAND() LIMIT 1");
if($artist != ""){
$artist = str_replace(" ", "+", $artist);
if(mysql_num_rows($iquery) == 0){
$url = "http://developer.echonest.com/api/v4/artist/images?format=xml&api_key=".$api_key."&name=".$artist."&results=20";
$data = file_get_contents($url);
if($data=false){return 'Error Getting Image';}
$images = new SimpleXMLElement($data);
foreach($images as $image){
foreach($image->image as $indimage){
$insiquery = "INSERT INTO images (id, artist, url) VALUES (NULL, '$artist','".$indimage->url."')";
mysql_query($insiquery);
}
}
return "<img src=\"".$indimage->url."\" alt=\"$artist image\" />";
}else{
$imgurl = mysql_fetch_array($iquery);
return"<img src=\"".$imgurl['url']."\" alt=\"$artist image\" />";
}
}
else{
return"Image Aquire Function Error: <i>No Band Specified</i>";
}
return null;
}?>
echo getimage('Britney Spears');
这只是因为当您输入“xml调用”时,您的var“$imgurl[0]”
是空的:
试着这样做:
$images = new SimpleXMLElement($data);
$xmlImgUrl = array();
foreach($images as $image){
foreach($image->image as $indimage){
$xmlImgUrl[] = $indimage->url;
$insiquery = "INSERT INTO images (id, artist, url) VALUES (NULL, '$artist','".$indimage->url."')";
mysql_query($insiquery);
}
}
}
$imgurl = $nrows == 0 ? $xmlImgUrl : mysql_fetch_row($iquery);
if(!empty($imgurl)) echo "<img src=\"".$imgurl[0]."\" alt=\"$artist image\">";
$images=新的simplexmlement($data);
$xmlImgUrl=array();
foreach($images作为$image){
foreach($image->image as$indimage){
$xmlImgUrl[]=$indimage->url;
$inseQuery=“在图像(id、艺术家、url)中插入值(NULL,$artist',“$indimage->url.”);
mysql_查询($insquery);
}
}
}
$imgurl=$nrows==0$xmlImgUrl:mysql\u fetch\u行($iquery);
如果(!empty($imgurl))回显“”;
当没有结果时,它会实例化一个图像URL数组。这只是因为当您输入“xml调用”时,您的var“$imgurl[0]”
是空的:
试着这样做:
$images = new SimpleXMLElement($data);
$xmlImgUrl = array();
foreach($images as $image){
foreach($image->image as $indimage){
$xmlImgUrl[] = $indimage->url;
$insiquery = "INSERT INTO images (id, artist, url) VALUES (NULL, '$artist','".$indimage->url."')";
mysql_query($insiquery);
}
}
}
$imgurl = $nrows == 0 ? $xmlImgUrl : mysql_fetch_row($iquery);
if(!empty($imgurl)) echo "<img src=\"".$imgurl[0]."\" alt=\"$artist image\">";
$images=新的simplexmlement($data);
$xmlImgUrl=array();
foreach($images作为$image){
foreach($image->image as$indimage){
$xmlImgUrl[]=$indimage->url;
$inseQuery=“在图像(id、艺术家、url)中插入值(NULL,$artist',“$indimage->url.”);
mysql_查询($insquery);
}
}
}
$imgurl=$nrows==0$xmlImgUrl:mysql\u fetch\u行($iquery);
如果(!empty($imgurl))回显“”;
当mysql中没有结果时,它会实例化一个图像URL数组。谢谢。我是个白痴——当我检查页面的源代码(使用chrome)时,chrome再次加载页面——缓存版本!我添加了$iquery=mysql_查询(“从images
WHERE-artist=”中选择url“$artist.”“ORDER BY RAND()LIMIT 1”);就在这一行被回应之前,一切都被整理好了。谢谢。我是个白痴——当我检查页面的源代码(使用chrome)时,chrome再次加载页面——缓存版本!我添加了$iquery=mysql_查询(“从images
WHERE-artist=”中选择url“$artist.”“ORDER BY RAND()LIMIT 1”);再一次,就在这一行被回音的地方,一切都被整理好了。谢谢!正如我在对另一个答案的评论中所说的,我是个白痴。当我检查页面的源代码时,chrome正在重新加载包含缓存URL的页面。如果我能接受这两个答案,那么我就会接受!(你的代码也让我意识到我需要整理我的代码…)谢谢!正如我在对另一个答案的评论中所说的,我是个白痴。当我检查页面的源代码时,chrome正在重新加载包含缓存URL的页面。如果我能接受这两个答案,那么我就会接受!(你的代码也让我意识到我需要整理我的代码…)