السلام عليكم الاخوة الكرام لدى محرك بحث واريد ان اقوم بتخزين جميع الكلمات التى يقوم المستخدمون بادخالها فى قاعدة البيانات لدى
اتمنى من الاخوة ان تساعدنى والا يكونوا بخلاء
السلام عليكم الاخوة الكرام لدى محرك بحث واريد ان اقوم بتخزين جميع الكلمات التى يقوم المستخدمون بادخالها فى قاعدة البيانات لدى
اتمنى من الاخوة ان تساعدنى والا يكونوا بخلاء
اخي بما انه لديك موقع بحث (اي يوجد لديك الكثير من الناس تقوم بعمليات البحث) لا انصحك بأي شىء يتعلق بقاعدة البيانات.
بدلا من ذلك، اذا كنت تستعمل الcpanel، هناك خاصية اسمها row access logs تحوي معلومات حول من تصفح وماذا تم تصفحه في موقعك(يشمل استعلامات get)،يمكنك تنزيل المعلومات على شكل ملف نصي، هذه الخاصية تتنفذ بطريقة اوتوماتيكية، اي لا حاجة لاجهاد قاعدة البيانات، كل ما عليك فعله، هو برمجة سكربت لتحليل هذه البيانات ووضعها في صورة يمكن الاستفادة منها.
اذا لم يكن لديك cpanel استخدم اي برنامج احصاء يظهر لك ما تم تصفحه في موقعك.
التعديل الأخير تم بواسطة ahmad sadiq ; 30-12-2009 الساعة 10:45 PM
اخى الحبيب احمد انا اريد ان اقوم بتخزين ما يتم المستخدمون ادخاله حتى ارسل نتائج البحث الى محركات البحث كجوجل على هيئة روابط يتم ارشفتها كل 24 ساعه
اتمنى المساعده
وهذا بالضبط ما قصدته.
عندما يبحث الزائر عن كلمة اول ما يفعله هو ادخالها في الفورم. الفورم يرسل الكلمة بصيغة get، صيغة get هي عبارة عن رابط في موقعك يلتقطه برنامج الاحصاء، برنامج الاحصاء يقوم بتخزين هذا الرابط تلقائيًا في ملف الlogs ، انت تنزل ملف ال logs وتحلله وتحصل على الروابط المطلوبة في موقعك،تحلل النتائج التي حصلت عليها مرة اخرى وتستخرج منها الروابط التي خرجت من صفحة البحث، وهذه الروابط بالطبع تحوي كلمات البحث التي بحث عنها الزائر.
الصورة قد توضح القصد-الزائر قد بحث عن كلمة mazda
http://www.swalif.net/softs/attachme...1&d=1262379402
لقد قمت بكتابة كود بسيط يقوم بتحليل ملف اللوج
كان يمكن كتابة هذا الكود بالregex ولكني غير متمرس في الموضوع، لذا كتبت الكود بال strposكود PHP:
<?php
$sites = Array();
$myFile = "site.txt";
$site = "http://google.com";
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
$length = strlen($myFile);
$pos1=0;
$pos2=0;
$lastPos=strripos($theData,"HTTP/1.1");
while ($pos2!=$lastPos){
$pos1 = strpos($theData,"GET",$pos2);
$pos1+=4;
$pos2 = strpos($theData,"HTTP/1.1",$pos1);
if ($pos2-$pos1 <100){
$url = substr($theData,$pos1,$pos2-$pos1);
if (strpos($url,"query")){
if (strpos($url,"http")==0)
$sites[]= $site.$url;
else
$sites[]= $url;
}
}
}
print_r($sites);
?>
فكرة الكود ان الروابط المطلوبة مسبوقة ب GET وبعدها HTTP://1.1
ملاحظات عن الكود:
*تصفية الروابط تتم بواسطة البحث عن كلمة query في الرابط اذا كنت تستعمل كلمة اخرى غيرها
*هناك شرط اخر لتصفية الروابط الطويلة التي يزيد طولها عن 200 حرف
ادخل الى raw access logs في ال cpanel تجد التالي:
http://www.swalif.net/softs/attachme...1&d=1262380043
تأكد من تعليم الخيار الذي في المستطيل الاحمر وحفظ الخيار
بعد الحفظ، سيتم ارشفة ملف اللوج كل يوم وستظهر النسخ اليومية في المستطيل الاسود
كل ما عليك فعله وقتها هو تنزيل الملف المضغوط وفك ضغطه، يظهر لك ملف على اسم الموقع،غير امتداده لصيغة txt
واستعمل الكود الذي كتبته.
بالتوفيق
التعديل الأخير تم بواسطة ahmad sadiq ; 12-05-2011 الساعة 02:18 AM
اخى الكريم اولا الف شكر على حب الافادة والخير
ثانيا وددت ان اعرف اين اضع هذا الكود الذى يقوم بتحلييل اللوجز
وما الذى اقوم بتغييره فى الكود
وربنا يديم الود
ملفات اللوج في ال cpanel كلها مخزنة في المجلد:
/access-logs
شوف المحتويات في ال ftp ،في مدير الملفات الذي في لوحة التحكم ما بتبين
وهذا الملف مرخص 640 اي لا يمكن الا لمدير الموقع رؤيته او نسخه، كما لا يمكن تغيير ترخيصه على ما اعتقد
يعني لا اعتقد انه يمكن الوصول اليه من public_html.
ولكن يمكن الوصول اليه من المهام المجدولة cron jobs وهذا ما نريده
بالنسبة للكود تغير قليلًا حتى يتمكن من انشاء سايت ماب:
استعملت في هذا الكود كلاس جاهز يقوم بتحويل المصفوفة الى سايت ماب، وهو موجود في المرفقات.كود PHP:
<?php
include("sitemap.php");
$map = new GoogleSiteMap();
$sites = Array();
$site = "http://undersite.javahw.com";
$myFile = "/home/YOUR_USER/access-logs/".$site;
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
$length = strlen($myFile);
$pos1=0;
$pos2=0;
$lastPos=strripos($theData,"HTTP/1.1");
while ($pos2!=$lastPos){
$pos1 = strpos($theData,"GET",$pos2);
$pos1+=4;
$pos2 = strpos($theData,"HTTP/1.1",$pos1);
if ($pos2-$pos1 <100){
$url = substr($theData,$pos1,$pos2-$pos1);
if (strpos($url,"query")){
if (strpos($url,"http")==0)
$sites[]= $site.$url;
else
$sites[]= $url;
}
}
}
$map->add($sites);
$map->write("/home/YOUR_USER/public_html/map.xml");
?>
غير متغير ال $site وضع مكانه رابط موقعك، اما كلمة query فهي المفروض ان تكون اسم الحقل الذي يدخل فيه المستخدم كلمة البحث، غير YOUR_USER الى اسم المستخدم للوحة التحكم.
اما map.xml فهو اسم السايت ماب الجديدة ، يعني كل مرة يتشغل الكود يعمل سايت ماب، لارسال هذه السايت مابس الى جوجل قم بعمل ملف سايت ماب رئيسي فيه روابط الخرائط الاخرى، وكل ما تعمل خريطة جديدة اضفها للخريطة الرئيسية، وارسل ملف الخريطة الرئيسية فقط الى جوجل.
ضع الكود في ملف اسمه site.php وضعه مع ملف الكلاس المرفق في مجلد اسمه site قبل ال public_html اي في المجلد /
لعمل مهمة مجدولة :
ادخل الى cron jobs واخترStandard Cron Manager
في الحقل Command to run: ادخل التالي:
بحيث ان YOUR_USER هو اسم المستخدم للوحة التحكمكود:php -q /home/YOUR_USER/site/site.php
وادخل الوقت الذي تريد ثم اضغط save crontab
اذا كان لديك موقع كبير جدًا فمن الارجح ان تحليل الملف لن ينتهي قبل مدة التشغيل القصوى لملف الphp وهو 20 او 30 ثانية على ما اعتقد.
لذا اذا كنت تستطيع تغيير هذه القيمة في ملف php.ini فافعل(عن طريق رفع ملف الى موقعك)، اما اذا لم تكن تستطيع فاتصل بمدير الاستضافة واطلب منه تغيير القيمة وهو على الاغلب لن يقبل، وفي هذه الحالة ما لك غير تقسم الملف لملفات فرعية
اترك الباقي لك![]()
التعديل الأخير تم بواسطة ahmad sadiq ; 12-05-2011 الساعة 02:18 AM