PDA

View Full Version : سوال: بررسی الگوریتم سیستم لایک کردن مطالب



netkhan
چهارشنبه 01 آذر 1391, 15:49 عصر
با سلام
من میخوام یک اسکریپت بنویسم که تعداد لایک هر مطلب رو تو فایل ذخیره کنه . یعنی هربار که لایک میشه مقدار لایک های مربوطه تو فایل مربوطه +1 بیشتر بشه.
الان دو تا الگوریتم داریم واسه ذخیره

1-یک فایل به نام likes.txt باشه که تو هر سطر شماره پست و تعداد لایکش ذخیره شه و هروقت که لایک میشه اسکریپت بیاد با استفاده از تابع explode شماره مربوط به پست رو پیدا کنه و به تعداد لایک هاش یکی اضافه کنه و سپس همه متن هارو ذخیره کنه.

2- واسه هر پست یک فایل فرضا با نام like54268.txt داشته باشیم که اینجا 54268 شماره پست هست. هروقت که لایک شد بیاد تو این فایل تعدادرو +1 کنه

الان سوالم اینجاست که کدوم یکیشون بهینه تره و فشار کمتری به سرور میاره و سرعتش بالاست؟

Tarragon
چهارشنبه 01 آذر 1391, 16:35 عصر
سلام
دوست عزیز شما از sql اسفاده کن خیلی بهتریه همونجایی که ID رو سیو کردید از sql استفاده کن

MRmoon
چهارشنبه 01 آذر 1391, 16:35 عصر
بهتره از mysql استفاده کنی

MRmoon
چهارشنبه 01 آذر 1391, 16:36 عصر
اگه خواستی برات مینویسم اینجا روش کارش

ابته من این روشی که شما برای لایک گذاشتین برای visit گذاشتم

mrgraphy
چهارشنبه 01 آذر 1391, 19:22 عصر
سلام دوست عزیز.
طبق نظر دوستان اگر از mysql استفاده کنید سرعت خیلی بیشتری داره و کدنویسی شما هم راحت تر میشه.
و یک نکته دیگه این که اگر پست ها عمومی هست و هرکسی میتونه لایک کنه باید براش ip filtering هم در نظر بگیرید که مثلا یک کاربر نیاد یک پست رو با یک ip صد مرتبه لایک کنه.
موفق باشید.

netkhan
چهارشنبه 01 آذر 1391, 19:52 عصر
یعنی کلا به نظرتون اگه الگوریتم به یک شکل باشه سرعت کار با mysql بیشتر از file txt هست ؟

mrgraphy
پنج شنبه 02 آذر 1391, 01:04 صبح
بله. در ضمن اگر دایرکتوری فایل ها مشخص بشه امکان دستکاری فایل ها نیز وجود داره.

MRmoon
پنج شنبه 02 آذر 1391, 07:14 صبح
یه مثال ساده میزنم.

برا ساختش!(البته اینو برا ادامه مطلب میگم که مثلا یه صفحه ساختی
sss.php
بعد جلوش با آیدی نشون میدی
sss.php?id=5
)

اول شما باید مقدار آیدی که میخواین به اون امتیاز بدین رو پیدا کنین:



$ID = $_GET['id'];


شما یه فرم ایجاد میکنی:



echo '<form action="like.php" target="_blank" method="post">';
echo '<input type="submit" name="like" value="لایک کنید"/>'."\n";

echo '<input type="hidden" name="id" value="'.$ID.'" ">';


خوب این فرم! آیدی رو هم پیدا کردیم! شماره آیدی رو با یه hidden انتقال میدیم.

بعدش تو صفحه ی like.php اینا رو میزنم:

<?php
require_once 'config.php'
?>
<?PHP

$server=mysql_connect(HOST,USER,PASS);
?>
<?php
mysql_select_db("madrese",$server);

?>
<?PHP
$id=$_POST['id'];
$table=mysql_query("SELECT * FROM `matlab` WHERE `id` = '$id'");

$row=mysql_fetch_assoc($table);
/*_____ Begin Updating like _____________*/
$like = $row['like']+1;
mysql_query("UPDATE `matlab` SET `like` = '$like' WHERE `id` = '$id'");
/*_____ END Updating like _______________*/


?>

امتیاز وارد شد!
اگه برا آدرس هاست واینا از config.php استفاده میکنی requir باید باشه.(البته من اینجا انتخاب دیتابیس رو تو خود فرم گذاشتم)



<?PHP

$server=mysql_connect(HOST,USER,PASS);
?>
<?php
mysql_select_db("madrese",$server);

?>


صفحه ی sss.php هم دیگه خودتون باید بسازیدش و بستگی به mysql عوضش کنین دیتابیس و تیبل هارو .

آیپی رو هم خودتون تنظیم کنین

netkhan
پنج شنبه 02 آذر 1391, 10:05 صبح
خیلی ممنون از راهنمائیهاتون