mahmod2000
دوشنبه 17 تیر 1392, 10:45 صبح
سلام و درود
من فایل xml ساختم با php ولی خوب همونجور که میدونید هر sitemap بیشتر از 50.000 تا نمیتونه لینک داشته باشه و نیاز داره که برای ادامه از 50.000 تا به بعد یک sitemap جدید ایجاد بشه
من با این کد sitemap رو میسازم :
<?php
//ابتدا یک فایل با نام sitemap.xml بسازید.
//ابتدا فایل را دریافت کرده و یک بار محتویات آن را پاک می کنیم
$file = "sitemap.xml";
chmod($file, 0755);//تنظیم مجوز های ویرایش
$fileHandle = fopen($file, 'w+')//استفاده از متد w+
or die("خطا: سطح دسترسی برای ویرایش فایل در سرور تنظیم نیست!");
$empty = "";//متغیر برابر خالی
//نوشتن در فایل
$stringData = $empty;
fwrite($fileHandle, $stringData);
fclose($fileHandle);
//باز کردن مجدد فایل
$file = "sitemap.xml";
chmod($file, 0755);
$fileHandle = fopen($file, 'a')//این بار با متد a
or die("خطا: سطح دسترسی برای ویرایش فایل در سرور تنظیم نیست!");
$start = "<?xml version='1.0' encoding='UTF-8'?>
<urlset xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd' xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'>\n";
//نوشتن فایل با متد a
$stringData = $start;
fwrite($fileHandle, $stringData);
//صفحه نخست
$home = "<url><loc>http://hotkhabar.ir/</loc></url>\n";
//نوشتن
$stringData = $home;
fwrite($fileHandle, $stringData);
//قبل از اتصال به پایگاه داده باید اطلاعات اتصال را تعریف کنید
//دریافت اطلاعات پست ها از دیتابیس و تبدیل به لینک
mysql_connect('localhost','root','') or die("not");
mysql_select_db('news') or die("not DB");
mysql_query('SET NAMES utf8');
$sql = mysql_query('SELECT * FROM tbl_news order by ID desc LIMIT 49998');
while($row = mysql_fetch_assoc($sql)){
$link = $row['textlink'];
$category = $row['Category'];
$category = str_replace(' ','-',$category);
$link = "<url>
<loc>http://site.ir/اخبار-$category/".urldecode($link).".html</loc>
</url>\n";
//نوشتن
$stringData = $link;
fwrite($fileHandle, $stringData);
}
$end = "</urlset>";//بستن نقشه سایت
//نوشتن
$stringData = $end;
fwrite($fileHandle, $stringData);
fclose($fileHandle);
?>
این درست کار میکنه
ولی اگه بخوام وقتی به 50.000 تا رسید مثال خودش یک فایل جدید ایجاد کنه و بقیش رو تو اون بریزه
ولی مکانیزمش رو نمیدونم که باید چیکار کنم
اگه راه حل دیگه ای هم دارید راهنمایی کنید ممنون میشم
من فایل xml ساختم با php ولی خوب همونجور که میدونید هر sitemap بیشتر از 50.000 تا نمیتونه لینک داشته باشه و نیاز داره که برای ادامه از 50.000 تا به بعد یک sitemap جدید ایجاد بشه
من با این کد sitemap رو میسازم :
<?php
//ابتدا یک فایل با نام sitemap.xml بسازید.
//ابتدا فایل را دریافت کرده و یک بار محتویات آن را پاک می کنیم
$file = "sitemap.xml";
chmod($file, 0755);//تنظیم مجوز های ویرایش
$fileHandle = fopen($file, 'w+')//استفاده از متد w+
or die("خطا: سطح دسترسی برای ویرایش فایل در سرور تنظیم نیست!");
$empty = "";//متغیر برابر خالی
//نوشتن در فایل
$stringData = $empty;
fwrite($fileHandle, $stringData);
fclose($fileHandle);
//باز کردن مجدد فایل
$file = "sitemap.xml";
chmod($file, 0755);
$fileHandle = fopen($file, 'a')//این بار با متد a
or die("خطا: سطح دسترسی برای ویرایش فایل در سرور تنظیم نیست!");
$start = "<?xml version='1.0' encoding='UTF-8'?>
<urlset xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd' xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'>\n";
//نوشتن فایل با متد a
$stringData = $start;
fwrite($fileHandle, $stringData);
//صفحه نخست
$home = "<url><loc>http://hotkhabar.ir/</loc></url>\n";
//نوشتن
$stringData = $home;
fwrite($fileHandle, $stringData);
//قبل از اتصال به پایگاه داده باید اطلاعات اتصال را تعریف کنید
//دریافت اطلاعات پست ها از دیتابیس و تبدیل به لینک
mysql_connect('localhost','root','') or die("not");
mysql_select_db('news') or die("not DB");
mysql_query('SET NAMES utf8');
$sql = mysql_query('SELECT * FROM tbl_news order by ID desc LIMIT 49998');
while($row = mysql_fetch_assoc($sql)){
$link = $row['textlink'];
$category = $row['Category'];
$category = str_replace(' ','-',$category);
$link = "<url>
<loc>http://site.ir/اخبار-$category/".urldecode($link).".html</loc>
</url>\n";
//نوشتن
$stringData = $link;
fwrite($fileHandle, $stringData);
}
$end = "</urlset>";//بستن نقشه سایت
//نوشتن
$stringData = $end;
fwrite($fileHandle, $stringData);
fclose($fileHandle);
?>
این درست کار میکنه
ولی اگه بخوام وقتی به 50.000 تا رسید مثال خودش یک فایل جدید ایجاد کنه و بقیش رو تو اون بریزه
ولی مکانیزمش رو نمیدونم که باید چیکار کنم
اگه راه حل دیگه ای هم دارید راهنمایی کنید ممنون میشم