在我的数据库中存储联盟会员图像

时间:2011-05-14 11:13:11

标签: php xml simplexml

这是我用来从我的联盟产品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')");   
}  

谢谢

2 个答案:

答案 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请求越多,网站就越慢 如果那只是几张图片就可以了,如果你有一个快速的数据库服务器