• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

ساخت نقشه سایت (sitemap) توسط php

MilanSeo

Registered User
تاریخ عضویت
1 نوامبر 2014
نوشته‌ها
254
لایک‌ها
56
محل سکونت
اصفهان
سلام دوستان
من یه سایت مپ رو با php , mysql نوشتم که خیلی هم خوب کار میکنه ولی یه مشکلی که برخوردم این هست که حجم اطلاعاتی که من به فایل xml میفرستم خیلی زیاد هست و استلاحا sitemap کرش میکنه و باز نمیشه !
تنها راه حلی که برای همچین سایت هایی پیدا کردم این هست که سایت مپ ها صفحه بندی بشن ! [ مثل افزونه Yoast در وردپرس ]
( اگه راه حل بهتری به ذهنتون میرسه بگید [ گذاشتن LIMIT رو تست کردم قبلا ولی میخوام مطالب کامل بیاد همش] )

کسی بتونه راهنمایی کنه و سورس بهم بده یه دنیا ممنونش میشم ، اگر هم کسی با مبلق معقول انجام میده خبر بده به بنده !
مرسی
 

MilanSeo

Registered User
تاریخ عضویت
1 نوامبر 2014
نوشته‌ها
254
لایک‌ها
56
محل سکونت
اصفهان
راحت ترین ، بهترین واصولی ترین روش همون صفحه بندی سایت مپ هست . از وردپرس الگو بگیرید
دوست عزیز @behzadnoor خوب من اگه میدونستم که سوال نمیکردم ک :)
شما اگه بلدید یه سورس به بنده بدید یه دنیا ممنونت میشم چون کارم فقط گیر همینه !
 

behzadnoor

Registered User
تاریخ عضویت
5 مارس 2005
نوشته‌ها
1,886
لایک‌ها
287
محل سکونت
×زیر چتر سبز×
کار مشکلی نیست چند صفحه سایت مپ بسازید و توی هرکدوم میزان معینی کوئریرو بخونید . در نهایت همه صفحات رو در سایت مپ ایندکس قرار بدین . این مقاله هم کمکتون میکنه .


https://support.google.com/webmasters/answer/75712?rd=1
 

MilanSeo

Registered User
تاریخ عضویت
1 نوامبر 2014
نوشته‌ها
254
لایک‌ها
56
محل سکونت
اصفهان
کار مشکلی نیست چند صفحه سایت مپ بسازید و توی هرکدوم میزان معینی کوئریرو بخونید . در نهایت همه صفحات رو در سایت مپ ایندکس قرار بدین . این مقاله هم کمکتون میکنه .


https://support.google.com/webmasters/answer/75712?rd=1
عزیز فکر میکنم منظور من رو نفمیدید !
حجم اطلاعات بسیار بالا هست در حدود 5 هزار مطلب در روز ارسال بشه من که نمیتونم هر روز بشینم دستی سایت مپ تعریف کنم ک :D
قبلا این روش رو تست کردم و تا الان 16 تا سایت مپ دستی مجبور شدم بزنم !

من میخوام مثلا با Cron Jobs در 10 دقیقه اطلاعات چک بشه و همه چیز اتوماتیک ایجاد بشه من دخالت نکنم داخلش !
 

behzadnoor

Registered User
تاریخ عضویت
5 مارس 2005
نوشته‌ها
1,886
لایک‌ها
287
محل سکونت
×زیر چتر سبز×
حدود 50000 لینک میتونید در هر سایت مپ قرار بدین . اگه تعداد مطالب ارسالی زیاده باید یک انجین برای تولید سایت مپ بسازید . مطئنا 5000 مطلب توسط ربات ارسال میشه . کافیه اینجوری تعریف کنید که ربات ارسال کننده هر سه روز یکبار یک سایت مپ جدید بسازه و لینک ها رو تو اون بزاره و صفحه ایندکس مپ رو هم ویرایش کنه . البته روشای دیگه هم هست منتهی بهترین و کم فشار ترین روش از سمت ارسال کننده هست .
 

skate

Registered User
تاریخ عضویت
22 فوریه 2007
نوشته‌ها
393
لایک‌ها
143
محل سکونت
اصفهان
دوست من راه حل اصلیتون می تونه صفحه بندی باشه یا اینکه می تونید ورژن فشرده مثلا tar.gz رو بسازید.همچنین قرار نیست هر ۱۰ دقیقه یک بار کلا سایت مپ ساخته بشه ، سایت مپ های حجیم رو باید با دیتابیس واسطه پیاده کنید یا اگر می خواهید بصورت یه فایل واقعی بسازیدش ،باید هر بار که پست جدیدی اضافه می شه ، به اون فایل اضافه بشه. همچنین جون دیتابیستون حجیم هست ، باید این فایل بصورت temp پیاده بشه، ابتدا از فایل sitemap اصلی یک کپی ایجاد شه و پس از موفقیت آمیز بودن فایل جدید، اون فایل اصلی حذف بشه.
موفق و پیروز باشید
 

MOHAMMAD026_1

مدیر بازنشسته
تاریخ عضویت
16 ژوئن 2014
نوشته‌ها
5,065
لایک‌ها
8,693
محل سکونت
ROOT
شما ی sitemap index بسازید
بعد با استفاده از قابلیت OFFSET تو sql اون هارو مدیریت کنید
این مورد خیلی ساده هست

روش کار:
ابتدا بیاید ی دستور count بگیرید از مطالب، بعد تقسیم کنید ب 1000 (مثال)
شما 5000 تا مطلب داشته باشی و تقسیم کنی میشه 5 تا سایت مپ
بعد ب این صورت نام گذاری کنید و لینک بدید تو سایت مپ ایندکس:
sitemap-1.xml
sitemap-2.xml
و تا آخر

بعد یک فایل sitemap.php بسازید و این کد رو تو htaccess وارد کنید:
کد:
RewriteEngine on
RewriteRule ^sitemap-(.*).xml$ sitemap.php?id=$1
در آخر مقادیر رو تو php ب این صورت تنظیم کنید:
PHP:
$number = 1000;
$id = $_GET['id'];
$offset = ($id-1)*$number;
و اینطوری کوئری بزنید:
کد:
"SELECT * FROM `post` ORDER BY id ASC LIMIT $number OFFSET $offset"

البته یادتون نره متغیر $id رو امن کنید
 
بالا