这是我用来从我的联盟产品Feed中提取信息的基本代码。我正在拉,如下图所示,图片链接......并将网址存储到我的数据库中。问题是,我每页显示20个产品,如果联盟会员服务不正常,那么我的网站运行速度会慢下来。
我想做的是以某种方式存储整个iamges并热门网址...我认为这将改善我的网站性能。任何想法?
$feed = 'my affiliate feed';
$xml = simplexml_load_file($feed);
foreach( $xml->productinfo as $productinfo )
{
$pic0 = $productinfo->picture[0];
$pic1 = $productinfo->picture[1];
$pic2 = $productinfo->picture[2];
mysql_query("INSERT INTO ".$table." (pic0, pic1, pic2) VALUES ('$pic0', '$pic1', '$pic2')");
}
谢谢
答案 0 :(得分:1)
首先将pic0,pic1和pic2字段更改为BLOB类型。 (您可能还希望将MIME类型与getimagesize()一起存储,以便在传递图像时与header()一起使用。)
$feed = 'my affiliate feed';
$xml = simplexml_load_file($feed);
foreach( $xml->productinfo as $productinfo )
{
for($i = 0; $i<=2; $i++) {
$pic[$i] = mysql_real_escape_string(file_get_contents($productinfo->picture[$i]));
}
mysql_query("INSERT INTO $table (pic0, pic1, pic2) VALUES ('$pic[0]', '$pic[1]', '$pic[2]')");
}
我假设你在$ table中有一个ID字段。在新的PHP脚本中提供图像,如下所示:
if (!isset($_GET['id'])) die('No ID');
if (!isset($_GET['pic']) || !in_array($_GET['pic'], array(0, 1, 2)))
$i='0';
else
$i=mysql_real_escape_string($_GET['pic']);
$sql = sprintf( "SELECT pic$i FROM $table WHERE id=%s", mysql_real_escape_string($_GET['id']));
$result = mysql_query($sql) or die("Invalid query: " . mysql_error());
$row=mysql_fetch_array($result);
header("Content-type: image/jpeg");
echo $row[0];
答案 1 :(得分:0)
你也可以将它存储为base64 blob使网站不会更快,你拥有的db请求越多,网站就越慢 如果那只是几张图片就可以了,如果你有一个快速的数据库服务器