PDA

View Full Version : سوال: سوال در مورد sitemap.xml



mahmod2000
دوشنبه 17 تیر 1392, 09: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 تا رسید مثال خودش یک فایل جدید ایجاد کنه و بقیش رو تو اون بریزه
ولی مکانیزمش رو نمیدونم که باید چیکار کنم
اگه راه حل دیگه ای هم دارید راهنمایی کنید ممنون میشم

abolfazl-z
دوشنبه 17 تیر 1392, 10:05 صبح
با سلام

دو راه حل وجود دارد :

1. حلقه رو تا زمانی ادامه دهید که جواب کوئری مان 0 باشد(یعنی نتیجه ای نداشته باشد.)
مثلا ما 10000 تا پست داریم:


mysqli_query($con,"SELECT * FROM test LIMIT 0,5000");
mysqli_query($con,"SELECT * FROM test LIMIT 5001,10000");
mysqli_query($con,"SELECT * FROM test LIMIT 10001,15000");//khooroojee 0!!![pass dg vojood nadarad]

2.روش دوم این هست که بیایید کل پست ها را تقسیم بر 5000 کنید اگر عدد بدست اومده یک عدد صحیح بود خوب به تعداد عدد بدست اومده کوئری 5000 تایی میگیریم و اگر صحیح نبود ابتدا به صحیح تبدیل اش می کنم سپس به تعداد عدد بدست اومده + یک بار بیشتر کوئری می گیریم.(دلیل یک بار بیشتر این هست که یکم ریزه پست میمونه مثلا 5005 که 5 تا اش میمونه )

تست نکردم ولی فکر کنم عملی باشد.(راستی من برای 5000 تا گفتم شما میتونید 50000 هزار تا درنظر بگیرید)

sempaisaleh
یک شنبه 10 شهریور 1392, 15:06 عصر
دوستان یک سوال دارم البته شاید جاش اینجا نباشه ولی دوستان اگر واقعا جوابش رو میدونن دریغ نکنن:چشمک:
من از طریق نرم افزار سایت A1 sitemap Generator دارم sitemap ام رو درست میکنم. می خواستم بدونم که:
1- باید هر سری که صفحه جدید به سایتم اضافه شد. یا سایتم بروز شد این فایل درست کنم؟
2- هر سری که فایل رو درست کردم و جایگزین فایل قبلی تو هاستم کردم. باید به گوگل معرفیش کنم؟ یعنی resubmit کنم؟

رضا قربانی
یک شنبه 10 شهریور 1392, 15:39 عصر
دوستان یک سوال دارم البته شاید جاش اینجا نباشه ولی دوستان اگر واقعا جوابش رو میدونن دریغ نکنن:چشمک:
من از طریق نرم افزار سایت A1 sitemap Generator دارم sitemap ام رو درست میکنم. می خواستم بدونم که:
1- باید هر سری که صفحه جدید به سایتم اضافه شد. یا سایتم بروز شد این فایل درست کنم؟
2- هر سری که فایل رو درست کردم و جایگزین فایل قبلی تو هاستم کردم. باید به گوگل معرفیش کنم؟ یعنی resubmit کنم؟
بله . با هر تغییر باید محتویات فایل sitemap.xml هم تغییر کنه.
موفق باشید