gpt4 book ai didi

php - 如何通过单个 PHP 和 MySql 查询将数据保存在多个连续文件中以生成产品数据源

转载 作者:行者123 更新时间:2023-11-29 14:47:39 25 4
gpt4 key购买 nike

希望有人能帮忙。

下面的一段 php 代码(见下文)用于从数据库中提取所有可用的产品,并将它们本地保存到一个 xml 文件(somefile.xml)中,以便 google 每天都可以来并选择它以保留我们的商家帐户或也称为最新的 Google Base。

由于我的库存已增长到超过 200K 产品,Google 将不再接受该文件,因为它超过 20 兆大,并要求我将其拆分为较小的文件。

所以我正在寻找一种方法让这个查询将产品保存在多个文件中,假设每 10000 行(或产品)创建一个全新的文件,并按顺序使用新文件名(例如 somefile1.xml、somefile2 .xml 等),同时维护每个文件中的 xml 文件页眉和页脚。

$fp = fopen(BASE_PATH.'/somefile.xml','w');

$db->query("
SELECT ".DB_PREFIX."products.*,
WHERE ".DB_PREFIX."products.available='Yes'
ORDER BY title
");

///header
$xmlPacket =
'<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
<title>'.$settings["GlobalSiteName"].'</title>
<link>'.$settings["GlobalHttpUrl"].'</link>

while($db->moveNext()){

$product_url = $db->col["product_url"];
$name = $db->col["title"];
$condition = $db->col["condition"];

///products
$xmlPacket .=
"\n<item>
<title>".st_normalize($name)." (SKU ".st_normalize($pid).")</title>
<link>".st_normalize($product_url)."</link>
<g:condition>".st_normalize($condition)."</g:condition>
</item>\n";

}

///footer
$xmlPacket .=
'</channel>
</rss>';

fwrite($fp,$xmlPacket);
fclose($fp);

如果有人知道如何实现此目的,请分享任何想法。

谢谢,祝你有美好的一天!

最佳答案

这应该可以满足您的需要:

define(BASE_NAME, 'somefile');
define(MAX_ROWS, 10000);

$db->query("SELECT ".DB_PREFIX."products.*, WHERE ".DB_PREFIX."products.available='Yes' ORDER BY title");

$header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:g=\"http://base.google.com/ns/1.0\">\n<channel>\n<title>".$settings["GlobalSiteName"]."</title>\n<link>".$settings["GlobalHttpUrl"]."</link>";
$footer = "</channel>\n</rss>";

$n = 0;
$i = 0;
while($db->moveNext()){
if (!($i % MAX_ROWS)) {
if ($n) {
fwrite($fp, $footer);
fclose($fp);
}
$i = 0;
$n++;
$fp = fopen(BASE_PATH.'/'.BASE_NAME.$n.'.xml', 'w');
fwrite($fp, $header);
}

$product_url = $db->col["product_url"];
$name = $db->col["title"];
$condition = $db->col["condition"];

fwrite($fp, "\n<item>\n<title>".st_normalize($name)." (SKU ".st_normalize($pid).")</title>\n<link>".st_normalize($product_url)."</link>\n<g:condition>".st_normalize($condition)."</g:condition>\n</item>\n");
$i++;
}

fwrite($fp, $footer);
fclose($fp);

关于php - 如何通过单个 PHP 和 MySql 查询将数据保存在多个连续文件中以生成产品数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6562423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com